Просмотр полной версии : Счастливые билеты или _==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
линк не появился... ну да ладно)
ты еще сделай проверку счастливых IP адресов ))) "поздравляем ваш IP счастливый!!!"
ты еще сделай проверку счастливых IP адресов ))) "поздравляем ваш IP счастливый!!!"
:D реально
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot