Jump to content
php.lv forumi
darksign

Kurš māk stilīgāk apmainīt divu mainīgo vērtības?

Recommended Posts

XOR triku, ja tiešam jāmaina tikai veseli skaitļi, var arī pielietot augsta līmeņa valodās, bet nu es tam personīgi neredzu jēgu:

Augsta līmeņa valodas tāpēc ir augsta līmeņa, kur par šādiem vipendroniem nav jāsatraucas. Ja nu tikai sporta pēc, kā šajā topikā :)

Share this post


Link to post
Share on other sites
Ghenis .. un ko tieši tev iedeva? :))

Mhh,

a)Login sistēma, kura ļauj ielogoties tik no viena subneta utt.

b)Kaut kādi OOP pamati (Uzrakstīt klasi utt).

c)Inklūdot failu pēc GET parametra.

Principā, čeklists par to vai koderis zin elementāras drošības un programmēšanas lietas :-)

 

A par mainīgo mainīšanu - list($a, $b) = array($b, $a);

Share this post


Link to post
Share on other sites

Cik stilīgi ir domāt, ka esi stilīgs un mērīties ar savu programmētāja krānu publiski forumos? Katrā valodā savas metodes. Runa iet par php vai assembler?

Kurš no jums te ikdienā kodē uz assembler?

Share this post


Link to post
Share on other sites

Runa ir. Izlasīju jautājumu, mans pirmais jautājums būtu - "kādā programmēšanās valodā"? Piedodiet, man tas ir būtiski, kaut vai stila un sintakses pēc.

Ja es saņemu atbildi "php", tad es uzrakstu uz TĀFELES sekojoši:

<?php

$a = "aa";
$b = "bb";

$c = $a;
$a = $b;
$b = $c;

echo $a."<br/>";
echo $b;

 

Labākais un praktiskākais veids. Vai arī izmantojot iebūvēto funkciju list un array, bet starpība? Tēmas autora piedāvātais pirmais variants šķiet tik stulbs, cik nu stulbs vispār varētu būt šāda triviāla uzdevuma risinājums. Tas ir tas pats, kas dedzināt svecīti, lai izlasītu grāmatu, ja turpat ir pieejama galda lampa ar bezmaksas elektrību.

Share this post


Link to post
Share on other sites

to "Web Developer" nevajag uztvert personiigi.. tikai sporta un intereses peec...

 

par programmēšanas valodu.. nav ierobežojuma, jo dažādāk jo labāk.. (lai gan šis tak php forums galvenokārt... :D )

 

ja zini kā to izdarīt ASM, ok, pastāsti, ja MS ASM ir savādāk, tad arī.... ja lieto piemēram D (nevis C vai ko ierastu) tad pastāsti.. varbūt ir interesanta atšķirība, vai vēl kāds veids ieviests :))

 

 

tātad uz doto brīdi mums ir šeit iepostoti šādi veidi:

PHP varianti

$a = 3;
$b = 2;

 

$a = $a+$b; 
$b = $a-$b; 
$a = $a-$b;

 

$a = $a * $b; 
$b = $a / $b; 
$a = $a / $b;

 

$c = $b; 
$b = $a; 
$a = $b;

 

list($a, $b) = array($b, $a);

 

$a ^= $b ^= $a ^= $b;

 

 

Pyton varianti:

 

a, b = b, a

 

 

ASM varianti:

XOR AX,BX
XOR BX,AX
XOR AX,BX

 

XCHG AX, BX

 

kāds zin vēl kaut kādu foršu variantu kas īpaši izcelties? :)

 

p.s. nav obligāti universālam jābūt.. var būt arī konkrētiem gadījumiem.. piem. tikai string, tikai int utt tipiem ;)

Edited by darksign

Share this post


Link to post
Share on other sites

Kāda vairs jēga no tā? Tiem "foršajiem variantiem" ar kuriem "izcelties" nav nekādas praktiskas jēgas.

Tikpat labi vari prasīt kā pārkopēt failu, un atbilde dod risinājumu - izdrukāt faila hexdumpu, noskanēt ar skaneri, un tad ar ocr softu saglabāt atpazītos baitus vajadzīgajā faila atrašanās vietā. A jēga?

Share this post


Link to post
Share on other sites

Pieņemu, ka te tomēr ir php forums, attiecīgi, apspriedīsim tikai attiecībā uz valodu php, lai būtu līdzvērtīga skaidrība.

 

Cik nanosekundes kurš katrs paņēmiens aizņem, netaisos pētīt, bet, manuprāt, vislabākais paņēmiens ir:

list($a, $b) = array($b, $a);

Atkāpjos no sava iepriekšējā, kurš varētu būt otrs labākais.

 

Ar ko viņš labs?

1) ļoti īss un skaidrs pieraksts;

2) viegli lasāms kods;

3) nav nekā lieka un visu funkciju izpilda vienā rindiņā.

 

Performanci nav jēgas apspriezt tik sīkām vienībām. Cik tu tur ietaupīsi? Ja Tev katra milisekunde ir svarīga, kas izpildās uz servera, tad tev jādomā par nopietnākām valodām nekā php...

Share this post


Link to post
Share on other sites

Pie asm aizmirsāt piemest klāt veco labo push/pop variantu

 

push eax
push ebx
pop eax
pop ebx

 

ko var drusku optimizēt uz

 

push eax
mov eax, ebx
pop ebx

Share this post


Link to post
Share on other sites

to bubu => jēga nav.. vnk sporta un intereses pēc :) bet ja ir kāds pa tiešām forš varbūt aizmirstāks variants vienam, bet otram nē, tad te to ļoti labi var atgādināt... kā piemēram ar to list() = array() .... pats biju piemirsis.. un izskatās ka webdeveloper arī ;) un tnx to you all tagad taas lietas ir atsvaidzinaatas ;)

Share this post


Link to post
Share on other sites

×
×
  • Create New...