PDA

Просмотр полной версии : Счастливые билеты или _==wolf==_а мучает ностальгия


_==wolf==_
03.05.2009, 12:30
Все мы знаем что раньше в автобусе использовались бумажные билетики, которые надо было дырявить в специальном компостере и тогда он считался погашенным. Серийный номер таких билетов состоял из 6 цифр. Также появилась примета что если сумма первых трех цифр серийного номера равна сумме последних трёх цифр этот билет - счастливый, и несёт он деньги и удачу. ) Собственно к делу: сегодня 2 часа пытался реализовать генератор "счастливых" серийников на PHP, никак не получилось. Кто поможет сотворить сиё чудо? ;)

Pashkela
03.05.2009, 13:01
Ну например так, хотя наверняка не самый оптимальный вариант (генерим и выводим на экран 10 таких "счастливых" серийников):


<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>

wildshaman
03.05.2009, 13:04
<?
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}";
?>



выводит счастливые билетики а в конце - сколько их всего.

_==wolf==_
03.05.2009, 13:05
абсолютно все?? аа спс большое вам! ) + +

wildshaman
03.05.2009, 13:09
абсолютно все?? аа спс большое вам! ) + +

ну я точно не помню с какого номера билеты идут, напсиал с 111111, исправь на 100000 если что :)
А так да, если сумма первых трех числе равна сумме последих трех, то билет считается счаслтивым :)

_==wolf==_
03.05.2009, 13:39
спс огромное. кстати вот результат (http://dezmond.homeftp.org:81/goodnumes.txt) это не скрипт а готовый список, поэтому загрузит быстро не волнуйтесь ) 50412 всего билетов в одной серии.. а серий хз скока...

astrologer
03.05.2009, 13:45
Более интересное решение, отсюда (http://habrahabr.ru/blogs/zadachki/42682/#comment_1053896):#!/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;
}

wildshaman
03.05.2009, 13:49
Более интересное решение,

Это перл, а ТСу надо на пыхе :)

_==wolf==_
03.05.2009, 13:58
линк не появился... ну да ладно)

Gar|k
03.05.2009, 14:06
ты еще сделай проверку счастливых IP адресов ))) "поздравляем ваш IP счастливый!!!"

Dumi
03.05.2009, 19:35
ты еще сделай проверку счастливых IP адресов ))) "поздравляем ваш IP счастливый!!!"


:D реально