Jump to content
php.lv forumi

php un skaitlu skaitishana


rpg

Recommended Posts

Zinu ka tas ir iespejams tik nezinu ka to var dabut gatavu..Tatad ta -> man ir vesala skaitlu kaudze(kaadi 90 dazadi skaitli) un zinu kadai jabut summai..tachu summa neietilpst visi no siem 90 skaitliem..Vai iespejams uzveidot kautkadu skriptu uz php lai dators samekletu visas iespejamas kombinacijas kura skaitlu summa vienada ar man zinamo summu??Butu labi ja skripts paraditu kurus skaitlus izmantojis lai gutu rezultatu..

Link to comment
Share on other sites

beidzot kaut kas interesants... a to šitas forums ar katru dienu paliek aizvien garlaicīgāks... nu labi pie lietas...

 

nosēdēju dažas stundas kamēr kaut kas sanāca...

<?

 for ($i = 1; $i <= 90; $i++)
   $foo[$i] = rand(0, 100);

 $sum = 27;

 function makeithappen($n, $foo, $bar, $sum) {
   foreach ($foo as $key) {
     $bar[$n] = $key;
     if ($n > 1) makeithappen($n-1, $foo, $bar, $sum);
     if (array_sum($bar) == $sum) print_r($bar);
   }
 }

 makeithappen(3, $foo, array(), $sum);

?>

vobšem viss tur strādā tā kā tu gribēji ( ja pareizi sapratu ) tikai tāda lieta ja piemēram meklē summu priekš 40 un masīvā ir tikai viens 20 tad tiks uzrādīts 20 + 20... nu tjipa skaitļi tiek saskaitīti paši ar sevi arī... bet es vairs negribu domāt... gribu gulēt -_-

 

āā un vēl viena lieta... tas $n ir... nu tjipa ja padod $n kā 2 tad maksimums būs divu skaitļu summa ja padod viņu kā 3 tad maksimums būs 3 skaitļu summa utt. droši ka tu viņu gribētu tik lielu cik liels ir masīvs... bet tur divas problēmas pirmā - es nezinu funkciju ar kuru varētu dabūt masīva izmēru ( nu var jau vienkārši uzkodēt kaut ko... bet vēlreiz gribu gulēt -_- ) un otra problēma ka tas viss stipri bremzē... jau uz 3 pie 90 ir laba bremze...

 

un jā... kā vienmēr atgādināšu ka nekādu atbildību par pareizību nenesu... :ph34r:

Link to comment
Share on other sites

Paldies:)..Šājā foruma vismaz ir gudri cilveki kas adbild,nevis nosauka tevi par mulki...Vai iespejams sim visam vel pievienot fichu- skripts arver failu skaitli.txt kura saturs ir apmeram tads:

 

25,3

78,9

78.9

 

un failu rezultats.txt kur attiecigi ir rezultats..

Ceru ka jums neliekas ka gribu tikai tik pie visa gatava un esmu lame - es veel macos un censos tikt vala no milzu kludam savos skriptos,es auksti verteju to ka jus veltat man laiku rakstot kadu koda gabalu..

Paldies!!

Link to comment
Share on other sites

Šājā foruma vismaz ir gudri cilveki kas adbild,nevis nosauka tevi par mulki...
ko nu es gudrs... mazliet vairāk par iesācējs vien esu... bet prieks ka tev tā liekās :) un par muļķi te tiešām nevienu bez īpaša iemesla nesauc... daļēji tādēļ šeit ir salasījies briesmīgi daudz pilnīgu iesācēju un forums tiek floodots ar garlaicīgiem jautājumiem...

 

skripts arver failu skaitli.txt
tas pavisam vienkārši
<?
 $foo = file("skaitli.txt");
?>

i viss... tas file() saliek katru faila rindiņu masīvā...

 

un failu rezultats.txt kur attiecigi ir rezultats
patīk man tas file()
<?
 $sum = file("rezultats.txt");
 $sum = $sum[0];
?>

Ceru ka jums neliekas ka gribu tikai tik pie visa gatava un esmu lame - es veel macos un censos tikt vala no milzu kludam savos skriptos,es auksti verteju to ka jus veltat man laiku rakstot kadu koda gabalu..

Paldies!!

ja šitā pasakās tad ir vērts palīdzēt ! ^_^

 

vispār ja nav noslēpums kam šitas kods ir vajadzīgs ? kaut kā nevaru iedomāties reālu pielietojumu...

Link to comment
Share on other sites

Paldies Venom!!!!!.. Sakuma biju domajis augsti tikai netisham uzrakstiju auksti..

Venom vai iespejams tevis rakstito skriptu mazliet parveidot?..Ta lai Skriptam nebutu janodod mainigais no cik skaitliem jamekle,bet gan tas dinamiski apskatitu visus iespejamos variantus no cik cipariem butu jamekle (doma sakuma sis nem 1 tad 2 u.t.t lidz sasniedzis maksimalo skaitu- skaitlu dauzumu data.txt faila)?..Man ir doma tada ka jabuve cikls bridi kad tiek generets kods turpmakai izpildei un pec koda izpildes javeido jauns cikls ar jauniem parametriem..Vieniga nelaime ta ka nemaku to istenot.. :wacko:

Link to comment
Share on other sites

//uzzinām cik daudz elementu ir masīvā no faila

$count=count($data)-1;

//kādu summa jāmeklē

$summa=xx;

 

tur, kur tagad pašās beigās stāv seek(2,3); utt.

 

for ($i=$count;$i>=0;$--)

seek($i,$summa);

 

droši vien, ja būs daudz iterāciju, skripta sākumā būs jāieliek set_time_limit(0);, jo droši vien skripts strādās vairāk par defaulta 30 sekundēm

 

P.S.> ja ir pamanīts, tad for iterācijas vairākumā gadījumu uzliku strādāt nevis no 0 līdz x, bet gan no x lejup līdz 0 - jo tā darās ātrāk

 

P.P.S.> līdzīgu paņēmienu esmu izmantojis priekš brute force

 

P.P.P.S.> pēc tam pasaki, kādu vietu olimpiādē dabūji ;)

Link to comment
Share on other sites

Skripts bija vajdzigs lai tiktu gala ar dazham finansialam - gramatvedibas skaitlu problemam - un loti palidzeja..Sory par lamerismu bet

Ieliekot beigasfor ($i=$count;$i>=0;$--)

seek($i,$summa);

skriptam ir milzu erors..Kur pareizi butu jaliek abas rindas ar count un foo?

 

Laikam esmu milzu lame un janem jalasa manualis

:unsure:

Link to comment
Share on other sites

Skripts bija vajdzigs lai tiktu gala ar dazham finansialam - gramatvedibas skaitlu problemam - un loti palidzeja..Sory par lamerismu bet
Ieliekot beigasfor ($i=$count;$i>=0;$--)

seek($i,$summa);

skriptam ir milzu erors..Kur pareizi butu jaliek abas rindas ar count un foo?

 

Laikam esmu milzu lame un janem jalasa manualis

:unsure:

Aizmirsu vienu burtu pierakstīt:

pašās beigās:

 

seek(3,10);

seek(3);

?>

 

vietā ieliekam

 

for ($i=$count;$i>=0;$i--)

seek($i,$summa);

?>

 

manuāļi ne tikai jālasa, bet arī jāsaprot ;)

Link to comment
Share on other sites

×
×
  • Create New...