Все мы знаем что раньше в автобусе использовались бумажные билетики, которые надо было дырявить в специальном компостере и тогда он считался погашенным. Серийный номер таких билетов состоял из 6 цифр. Также появилась примета что если сумма первых трех цифр серийного номера равна сумме последних трёх цифр этот билет - счастливый, и несёт он деньги и удачу. ) Собственно к делу: сегодня 2 часа пытался реализовать генератор "счастливых" серийников на PHP, никак не получилось. Кто поможет сотворить сиё чудо?
Ну например так, хотя наверняка не самый оптимальный вариант (генерим и выводим на экран 10 таких "счастливых" серийников): PHP: <pre> <? $i=0; while ($i<=10) { $a = rand(1,9); $b = rand(1,9); $c = rand(1,9); $d = $a+$b+$c; $e = rand(1,9); $f = rand(1,9); $g = rand(1,9); $k = $e+$f+$g; if ($d==$k) { echo $a.$b.$c.$e.$f.$g."\n"; $i++; } } ?> </pre>
Code: <? for ($i=100000; $i<=999999; $i++) { settype($i, "string"); if (($i[0]+$i[1]+$i[2])==($i[3]+$i[4]+$i[5])) { echo "{$i}<br>"; $sch++; } } echo "Всего билетов счастиливых: {$sch}"; ?> выводит счастливые билетики а в конце - сколько их всего.
ну я точно не помню с какого номера билеты идут, напсиал с 111111, исправь на 100000 если что А так да, если сумма первых трех числе равна сумме последих трех, то билет считается счаслтивым
спс огромное. кстати вот результат это не скрипт а готовый список, поэтому загрузит быстро не волнуйтесь ) 50412 всего билетов в одной серии.. а серий хз скока...
Более интересное решение, отсюда: Code: #!/usr/bin/perl -w use strict; my %summa = (); for my $i ( 0 .. 999 ) { push @{ $summa{summa($i)} }, $i; } for my $x ( sort { $a <=> $b } keys %summa ) { my @x = @{ $summa{$x} }; for my $i ( @x ) { for my $j ( @x ) { printf "%03d%03d\n", $i, $j; } } } sub summa { my $x = shift; my $s = 0; while ( $x ) { $s += $x % 10; $x = int($x / 10); } return $s; }