程式碼
entryfile = "list.txt"; #輝かしき本選出場者のリストを改行で区切ってね
$codefile = "code.txt"; # コード以外の文字列は紛れ込ませないでね
$resultfile = "result.txt"; #出力結果のファイル。標準出力が好きだけど
$randomfile = "random.txt"; #乱歩なファイル(1~出場人数)。2人で共有すべし
open(IN,$entryfile);
while(){
chomp;
push(@entry,$_);
}
close(IN);
$num = $#entry+1; #エントリー人数
print STDERR "出場キャラ数: $num\n";
$i=0;
open(IN,$codefile);
while(){
chomp;
$tmp=$_;
if($i>=$num) {last; }
$list{$_} = $entry[$i];
$i++;
}
close(IN);
undef(@entry);
print "\[コードによる並び替え\]\n";
foreach(sort keys %list){
push(@entry,$list{$_});
print STDOUT "$list{$_}\t$_\n";
}
if($#entry+1 != $num) {die("人数あわない1");}
print STDERR "コード処理完了\n";
print STDOUT "-------------\n";
undef(%list);
$i=0;
open(IN,$randomfile);
while(){
chomp;
$tmp=$_;
if($i>=$num) {last; }
if($tmp>$num) {next;}
$list{substr('00' . $tmp,-3)} = $entry[$i];
$i++;
}
close(IN);
undef(@entry);
print "\[乱数による並び替え\]\n";
foreach(sort keys %list){
push(@entry,$list{$_});
print STDOUT "$list{$_}\t$_\n";
}
if($#entry+1 != $num) {die("人数あわない2");}
print STDERR "乱数処理完了\n";
$kitei = 288;
### 表示処理 ###
$amari = $num-$kitei;
if($amari>16){die("あまりおおすぎ");} #ごめん、それ以上のあまりは考えてない
@bc=("A","B","C","D","E","F","G","H");
@hdm=("8/","8/","8/","8/","8/","8/","9/","9/");
@hdd=(3,7,15,19,24,28,2,6);
$of=0;
open(fp,"> $resultfile");
for($i=0;$i<8;$i++){
#print fp '== ' . $bc[$i] . "ブロック ==\n";
for($j=1;$j<=12;$j++){
#print fp $bc[$i] . substr('0' . $j,-2) . "試合\n";
$kumi=$bc[$i] . substr('0' . $j,-2) . '組';
$siaibi=$hdm[$i] . ($hdd[$i]+(($j-1)%4));
print fp $of+1 . "\t$kumi\t$siaibi\t" . $entry[$of] . "\n"; $of++; #あい
print fp $of+1 . "\t$kumi\t$siaibi\t" . $entry[$of] . "\n"; $of++; #やい
print fp $of+1 . "\t$kumi\t$siaibi\t" . $entry[$of] . "\n"; $of++; #やー
if($j == 1 && $amari>$i){
print fp $of+1 . "\t$kumi\t$siaibi\t" . $entry[$of] . "\n"; $of++; #宇宙も
}
if($j == 7 && $amari-8>$i){
print fp $of+1 . "\t$kumi\t$siaibi\t" . $entry[$of] . "\n"; $of++; #惑星も
}
}
print fp "\n";
}
print STDERR "終了\n";
exit;