Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Счастливые билеты или _==wolf==_а мучает ностальгия (https://forum.antichat.xyz/showthread.php?t=118854)

_==wolf==_ 03.05.2009 12:30

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

Pashkela 03.05.2009 13:01

Ну например так, хотя наверняка не самый оптимальный вариант (генерим и выводим на экран 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>


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

Цитата:

Сообщение от _==wolf==_
абсолютно все?? аа спс большое вам! ) + +

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

_==wolf==_ 03.05.2009 13:39

спс огромное. кстати вот результат это не скрипт а готовый список, поэтому загрузит быстро не волнуйтесь ) 50412 всего билетов в одной серии.. а серий хз скока...

astrologer 03.05.2009 13:45

Более интересное решение, отсюда:
Код:

#!/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

Цитата:

Сообщение от astrologer
Более интересное решение,

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

_==wolf==_ 03.05.2009 13:58

линк не появился... ну да ладно)

Gar|k 03.05.2009 14:06

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


Время: 16:59