[linux-support] Manchmal ist derkürzere Weg nicht der beste: Perl Beispiele

miLosh milosh at plexus.shacknet.nu
Wed Oct 6 22:24:34 CEST 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

michel wrote:
| Hallo zäme,
|
| Perl-Programmierer konnten interessiert sein.
nicht nur, hab mich grad herausgefordert gefuehlt, hehe

|
| Vor drei Wochen suchten wir eine Lösung, wo "find -d" die richtige und
| elegante war.
| miLosh und ich haben danach Mails "point-to-point" ganz friedlich
| getauscht.
stimmt, war sehr angenehm ;)

| Ich hatte erwähnt, dass mit dem Assembler die Produktivität wichtiger
| als "Bytes sparen" war.
beides kann hand in hand gehen, wie du gleich siehst.

|
| Hier habe ich auch ein Beispiel. Das folgende Program herstellt
| Palindrome:
|
| $ perl -e '$_=($a=reverse$;=$a.pop)|$"x$$a++.$;.$/until/$;/;print' abcde
|
| edcbabcde
hat leider nen kleinen schoenheitsfehler, es stellt den input anfangs
verkehrt herum dar. und:

milosh at orbit milosh $ strace perl -e
'$_=($a=reverse$;=$a.pop)|$"x$$a++.$;.$/until/$;/;print' hallo  2>&1
|grep -c "="
109
~ |____ funktionsaufrufe generiert das teil.

|
| Ich habe es nicht geschrieben, sondern ein Perl-Hacker sogar
| Perl-Künstler. Sie üben "perlgolf" (wie vor 20 Jahren "Basicgolf" ;-) )
| Einige Lösungen für dieses Problem kann man hier finden:
| http://terje.perlgolf.org/wsp/pgas/score.pl?func=solution&hole=39&season=1
wie gesagt, find ich nen lustigen wettbewerb. da ich kein perl kann, es
aber liebe auf der shell rumzuhacken, habe ich eine loesung mit awk
geschrieben:

milosh at orbit plexus $ echo hallo | awk '{c=length-1;i=0;if
(substr($0,c,1)==substr($0,length,1)) {c--}
while(i<c){$0=sprintf("%s%s",$0,substr($0,c-i,1));i++};print $0; exit}'
hallollah

zugegeben, es _sieht_ nicht so sexy aus wie in perl (die stringfunctions
in awk sind sehr basic hehe), dafuer ist es aber schneller und das
original bleibt erhalten ;)

milosh at orbit plexus $ echo hallo | strace awk '{c=length-1;i=0;if
(substr($0,c,1)==substr($0,length,1)) {c--}
while(i<c){$0=sprintf("%s%s",$0,substr($0,c-i,1));i++};print $0; exit}'
- - 2>&1 | grep -c "="
53
~ |__ funktionsaufrufe - also die haelfte ;)


| Andere Kunstprogramme und Links sind hier : http://terje.perlgolf.org/
kennst du auch links fuer andere sprachen, c oder php?

|
| Nicht wartbar (sogar lesbar) aber Hut ab!
bringt auf jedenfall ne menge phun - vielleicht findet jemand ja noch ne
schnellere loesung?

habt spass
miLoshsoLim

- --
Spirit moves through all thingsgniht lla hguorht sevom tiripS
- -= Sience / Toxicity =- System of a Down
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFBZEZxwIxadslE1pkRAvdhAJ9RWMrGsk8U/qyn6za/eXc1aBI4xwCeIYQD
abTJFjDfxP7RlAPsc3qmEIk=
=a2PL
-----END PGP SIGNATURE-----



More information about the Linux-support mailing list