523066680
发表于 2017-09-11 22:00
本帖最后由 523066680 于 2017-09-11 22:02 编辑
回复 48# sunzhiguolu
生成数独,内容完全随机,来一个? 解数独也准备开搞
=info
523066680
2017-09
=cut
use IO::Handle;
STDOUT->autoflush(1);
my $main = 0;
my $bad = 0;
AGAIN:
our %hash;
grep { $hash{$_} = 1 } (1..9);
@nums = (1..9);
our $mat =
[
#[ 1,2,3,4,5,6,7,8,9 ],
,
[],[],[],[],[],[],[],[]
];
my $nextline;
for my $line ( 1 .. 8 )
{
$nextline = undef;
func( $line, 0, \$nextline );
if ( not defined $nextline )
{
$bad++;
print "not ok\n";
}
$mat->[$line] = [ split("", $nextline) ];
}
for my $idx ( 0..$#$mat )
{
printf "%s\n", join(",", @{$mat->[$idx]} );
}
print "\n";
goto AGAIN if ($main++ < 1000);
printf "bad: %d\n", $bad;
sub func
{
our @all;
our $mat;
our %hash;
my ( $curr, $lv, $ref ) = @_;
if ($lv > 8)
{
#如果当前行是第五行或者第八行,预判下一行是否无解
if ( $curr == 4 or $curr == 7)
{
if ( try_next_line( $curr ) == 0 )
{
return 0;
}
else
{
$ref = join("", @{$mat->[$curr]});
return 1;
}
}
else
{
$ref = join("", @{$mat->[$curr]});
return 1;
}
}
my @out;
my %dupl;
if ( $curr % 3 == 1 )# 1 24 57 8
{
if ( $lv < 3 ) { @out = @{$mat->[$curr-1]}; }
elsif ( $lv < 6 ) { @out = @{$mat->[$curr-1]}; }
else { @out = @{$mat->[$curr-1]}; }
}
elsif ( $curr % 3 == 2 )
{
if ( $lv < 3 ) { @out = (@{$mat->[$curr-1]}, @{$mat->[$curr-2]}) }
elsif ( $lv < 6 ) { @out = (@{$mat->[$curr-1]}, @{$mat->[$curr-2]}) }
else { @out = (@{$mat->[$curr-1]}, @{$mat->[$curr-2]}) }
}
if ($curr >= 3)
{
push @out, map { $mat->[$_][$lv] } ( 0 .. 3*int($curr/3) - 1 );
}
push @out, @{$mat->[$curr]}[ 0 .. $lv-1 ];
%dupl = %hash;
grep { delete $dupl{$_} } @out;
my $res = 0;
for my $e ( keys %dupl )
{
$mat->[$curr][$lv] = $e;
$res = func($curr, $lv+1, $ref);
last if ($res == 1);
}
return $res;
}
sub try_next_line
{
my ($row) = shift;
my $nextline = undef;
func( $row+1, 0, \$nextline );
if ( not defined $nextline )
{
return 0;
}
else
{
return 1;
}
}
1,5,8,2,3,9,6,4,7
2,7,3,1,6,4,8,5,9
4,6,9,5,8,7,2,3,1
3,2,7,6,1,5,4,9,8
9,4,1,8,7,3,5,6,2
5,8,6,9,4,2,7,1,3
6,9,5,3,2,8,1,7,4
7,1,2,4,9,6,3,8,5
8,3,4,7,5,1,9,2,6
6,7,4,8,2,1,9,3,5
9,3,8,5,4,7,6,1,2
1,2,5,3,6,9,7,4,8
3,6,1,7,9,5,2,8,4
4,5,7,1,8,2,3,6,9
2,8,9,4,3,6,1,5,7
7,4,2,6,1,8,5,9,3
5,1,3,9,7,4,8,2,6
8,9,6,2,5,3,4,7,1
4,1,5,3,7,8,9,6,2
7,9,6,5,4,2,1,3,8
3,8,2,9,1,6,4,5,7
9,2,3,8,5,4,6,7,1
6,5,4,7,9,1,8,2,3
1,7,8,6,2,3,5,9,4
2,3,1,4,6,9,7,8,5
8,6,7,1,3,5,2,4,9
5,4,9,2,8,7,3,1,6
4,5,9,6,8,7,2,1,3
6,2,7,4,1,3,9,5,8
1,3,8,2,9,5,4,6,7
3,7,2,1,5,4,8,9,6
9,6,4,7,2,8,1,3,5
5,8,1,3,6,9,7,4,2
2,1,3,8,4,6,5,7,9
7,4,5,9,3,2,6,8,1
8,9,6,5,7,1,3,2,4
9,6,5,7,4,8,1,3,2
1,2,4,5,3,9,8,6,7
3,7,8,2,6,1,9,5,4
2,4,6,9,1,3,5,7,8
7,1,9,6,8,5,4,2,3
8,5,3,4,2,7,6,1,9
5,8,2,1,7,4,3,9,6
4,9,7,3,5,6,2,8,1
6,3,1,8,9,2,7,4,5
5,1,8,2,9,7,3,6,4
2,7,6,4,5,3,9,1,8
9,3,4,6,1,8,5,2,7
4,8,9,1,2,6,7,5,3
1,6,3,9,7,5,8,4,2
7,2,5,3,8,4,6,9,1
8,5,1,7,4,9,2,3,6
3,4,7,5,6,2,1,8,9
6,9,2,8,3,1,4,7,5
3,2,7,1,9,8,6,4,5
5,4,1,2,7,6,9,8,3
6,8,9,4,3,5,7,2,1
1,5,2,8,4,7,3,9,6
4,9,8,6,1,3,2,5,7
7,3,6,9,5,2,8,1,4
8,6,4,3,2,1,5,7,9
2,1,5,7,6,9,4,3,8
9,7,3,5,8,4,1,6,2
1,4,7,9,5,2,6,8,3
2,9,5,6,3,8,1,7,4
3,6,8,4,1,7,2,5,9
8,2,4,3,6,9,5,1,7
6,3,1,2,7,5,4,9,8
5,7,9,1,8,4,3,2,6
4,1,2,7,9,3,8,6,5
9,5,3,8,2,6,7,4,1
7,8,6,5,4,1,9,3,2
1,8,2,4,9,7,5,3,6
6,4,9,2,3,5,7,8,1
3,7,5,1,6,8,2,9,4
9,6,3,7,1,4,8,5,2
4,5,1,8,2,9,3,6,7
7,2,8,3,5,6,1,4,9
8,1,6,5,4,2,9,7,3
5,3,4,9,7,1,6,2,8
2,9,7,6,8,3,4,1,5
5,8,7,1,9,6,2,4,3
1,3,4,2,7,5,8,9,6
9,6,2,8,3,4,1,5,7
3,1,6,4,5,2,9,7,8
2,9,8,7,1,3,4,6,5
7,4,5,6,8,9,3,1,2
8,5,9,3,4,7,6,2,1
4,2,1,5,6,8,7,3,9
6,7,3,9,2,1,5,8,4
523066680
发表于 2017-09-11 22:01
回复 49# sunzhiguolu
人品,这么多帖子下来,我提过你家谁?呵呵
sunzhiguolu
发表于 2017-09-11 22:03
本帖最后由 sunzhiguolu 于 2017-09-11 22:05 编辑
说是你爱找借口 (抱歉)
523066680
发表于 2017-09-11 22:32
本帖最后由 523066680 于 2017-09-11 22:33 编辑
回复 52# sunzhiguolu
解数独题,我写了照样发上来。就明天这个时候(之前),你行?
sunzhiguolu
发表于 2017-09-11 22:37
回复 50# 523066680
你想发布数独代码也不必用这个形式搞吧,单独发个帖子多好。
另外,我想对你说
你若编写代码能力强,回帖质量高 我自然尊敬你
若是吹牛皮,损人的磕 其实我一点都不会输给你,只会比你更强。。。
sunzhiguolu
发表于 2017-09-11 22:41
回复 53# 523066680
我记得解数独的话,应该分至少三个等级。(简单,中等,困难)
另外,数独自解的话 别忘了提供难度提示。最后要看下效能了,不知你行不行?
523066680
发表于 2017-09-11 23:26
本帖最后由 523066680 于 2017-09-11 23:34 编辑
回复 55# sunzhiguolu
那也比你行。现在再看看这几句,这水平这见识,呵呵:
很好?
用 cmd 找找看哪些一周以前 尺寸在 1mb ~ 2mb 之前的图片有哪些?
将结果按照尺寸大小降序排序 尺寸一样的按照文件名升序排序。试试看?
sunzhiguolu
发表于 2017-09-11 23:34
回复 56# 523066680
你就吹牛逼行,看下你哪个 cmd 时间筛选 结果排序弄哪去了?
赶明改行吧,专门从事吹牛逼行业。
523066680
发表于 2017-09-11 23:36
本帖最后由 523066680 于 2017-09-11 23:39 编辑
回复 57# sunzhiguolu
改什么行,我现在就是从事外贸,业余才写代码,那也比你强,哈哈
用不着你尊敬,我就是觉得你水平挺low的,比我low
sunzhiguolu
发表于 2017-09-11 23:39
回复 58# 523066680
你在外贸行业屈才了,吹牛逼行业适合你。