#!/usr/bin/perl sub count{ my(@args) = @_; $text = ""; for ($i = 0; $i < 2**(scalar @args); $i++){ push(@ret, $text); $text=''; for($j = 1, $k = 0; $k < scalar @args; $j *= 2, $k++){ if($i & $j) {$text .= "$args[$k]:";} } #$text .= "}\n"; } push(@ret, $text); shift(@ret); return @ret; } sub check{ @args = @_; @args = sort @args; } @sets=<>; for(@sets) { my @nums=split; for(@nums) { $nums{$_}=1 } } @nums=sort( keys %nums); @results = count(@nums); if(@sets!=@results) {print "bad nums\n";exit} for (@sets){ next if ($_ eq ''); @ok=split; @ok=sort(@ok); $in=join(':', @ok, ''); $bad=1; for $test(@results) { if($test eq $in) { $bad=0; } } if($bad) { print "bad elt\n"; exit(); } } print "good\n";