分页: 1 / 1
[题]1-9组成三个三位数,要求比值为1:2:3
发表于 : 2021年10月15日 22:52
由 paktc
题:用1-9组成三个三位数abc, def, ghi, 每个数字只能使用一次,并且要求 abc:def:ghi=1:2:3
例:219,438,657
Re: [题]1-9组成三个三位数,要求比值为1:2:3
发表于 : 2023年04月05日 11:21
由 rubyish
192 384 576
219 438 657
273 546 819
327 654 981
#!/usr/bin/perl -w
use 5.010;
use warnings;
sub play {
number:
for my $n ( 123 .. 987 / 3 ) {
my @num = map { split '', $n * $_ } 1 .. 3;
my %has = ( 0 => 1 );
for (@num) {
next number if $has{$_}++;
}
say join $", map { $n * $_ } 1 .. 3;
}
}
play;
sub play2 {
for my $n ( 123 .. 987 / 3 ) {
my %num = map { $_, 1 } map { split '', $n * $_ } 1 .. 3;
next if keys %num != 9;
next if exists $num{0};
say join $", map { $n * $_ } 1 .. 3;
}
}
play2;
Re: [题]1-9组成三个三位数,要求比值为1:2:3
发表于 : 2023年04月05日 20:01
由 523066680
代码: 全选
my $a,$b,$c,$n;
for my $i ( 123 .. 334 )
{
($a, $b, $c) = ($i, $i * 2, $i * 3);
$n = $a + $b*1000 + $c * 1000000;
$mask = 0;
while ( $n >= 1 )
{
$x = $n%10;
$mask |= 1 << $x;
$n/=10;
}
printf "%d %d %d\n", $a, $b, $c if $mask == 0b1111111110;
}
Re: [题]1-9组成三个三位数,要求比值为1:2:3
发表于 : 2023年04月09日 19:44
由 rubyish
有意思。有意思。這個。
代码: 全选
$n = $a + $b*1000 + $c * 1000000;
Re: [题]1-9组成三个三位数,要求比值为1:2:3
发表于 : 2023年04月09日 20:02
由 rubyish
sub play {
for my $i ( 123 .. 334 ) {
my ( $a, $b, $c ) = ( $i, $i * 2, $i * 3 );
my $n = $a + $b * 1000 + $c * 1000000;
my $mask = 0;
while ( $n >= 1 ) {
代码: 全选
my $x = $n % 10;
$n /= 10;
last if $mask & ( 1 << $x );
$mask |= 1 << $x;
}
say "$a $b $c" if $mask == 1022;
}
Re: [题]1-9组成三个三位数,要求比值为1:2:3
发表于 : 2023年04月09日 20:05
由 rubyish
代码: 全选
last if $mask & ( 1 << $x );
Re: [题]1-9组成三个三位数,要求比值为1:2:3
发表于 : 2023年04月11日 17:41
由 523066680
rubyish 写了: ↑2023年04月09日 20:05
代码: 全选
last if $mask & ( 1 << $x );
老了思维退化了,你这个改动我还思考了蛮久的,大意是通过 and 操作符提前判断冲突的数字,减少循环次数。