Idiomatisches
am 04.04.2006 10:20:01 von Mirco Wahab
Hallo,
da ich ab und zu wieder die Anwandlung
bekomme, meine Python-Kenntnisse zu
verbessern, habe ich mal in den Python-
challenge (http://www.pythonchallenge.com/)
reingeschaut.
Allerdings fand ich den "Pythonchallenge"
eher eine "Challenge" für die Verwendung von
Python überhaupt ;-)
OK, so far so good. Jeder wie er möchte ;-)
Zjm Thema: zu Level 3 ist mir ein schickes
Perl-Konstrukt eingefallen; es geht
darum, ein "Lösungswort" aus einem
Zeichenkuddelmuddel zu extrahieren
(in __DATA__ steht dieser Zeichensalat):
print split /[^a-z]/, do { local $/; () };
__DATA__
%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{ }}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{([*}@[@&]+!!*{)!}{%+{))])[!^})+)$]#{*+^((@^@ }$[**$&^{$!@#$%)!@(&
+^!{%_$&@^!}$_${)$_#)!({@!)(^}!*^&!$%_&&}&_#&@{)]{+)%*{&*%*& @%$+]!*__(#!*){%&@++
....
....
....
Nun meine Frage dazu. Ist es üblich bzw.
'idiomatisch gebräuchlich', einen do{}-Block
so direkt in eine Liste zu expandieren - oder
sollte man das lassen?
Danke & Grüße
M.
Re: Idiomatisches
am 04.04.2006 12:08:37 von Frank Seitz
Mirco Wahab wrote:
> print split /[^a-z]/, do { local $/; () };
[...]
> Nun meine Frage dazu. Ist es üblich bzw.
> 'idiomatisch gebräuchlich', einen do{}-Block
> so direkt in eine Liste zu expandieren - oder
> sollte man das lassen?
Das ist völlig ok. Ein do-Block liefert, im Gegensatz
zu einem Block ohne do einen Wert und kann an allen Stellen
eingesetzt werden, wo ein Wert (hier: ein Array)
erwartet wird.
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Idiomatisches
am 04.04.2006 13:57:42 von Mirco Wahab
Hallo Frank
>> print split /[^a-z]/, do { local $/; () };
>
> Das ist völlig ok. Ein do-Block liefert, im Gegensatz
> zu einem Block ohne do einen Wert und kann an allen Stellen
> eingesetzt werden, wo ein Wert (hier: ein Array)
> erwartet wird.
Danke für den Hinweis. Arbeitet hier in der NG
jemand mit Pe *und* Py?
Ich frage mich inzwischen ein wenig, warum
ich Py lernen sollte (-- wo doch alle so drauf
schwören - it's kewl ;-)
Irgendwie sehen die Perl-Lösungen für die
Py-Challenge schöner aus :-((
Rätsel 5 ist so ein Ding. Ein Python-Data-Dump
von einem 3D-Array mit Zeichen und korrespon-
dierenden Wiederholungen.
(http://www.pythonchallenge.com/pc/def/banner.p)
#!/usr/bin/perl -w
use Inline::Python;
my $B = py_depickle('banner.f');
print "\n", map { $$_[0] x $$_[1] } @$_ for (@$B);
use Inline Python => <<'PYTHON';
import pickle
def py_depickle(f):
return pickle.Unpickler(open('banner.p')).load()
PYTHON
Der gesamte Perl-Code ist sogar
kürzer als das reine Laden der
Datenstruktur in Python.
Nun ja, belassen wirs dabei mit dem Flamewar ;-)
Viele Grüße & Dank
M.
Re: Idiomatisches
am 04.04.2006 19:11:49 von Tony Muler
Mirco Wahab wrote:
> Ich frage mich inzwischen ein wenig, warum
> ich Py lernen sollte (-- wo doch alle so drauf
> schwören - it's kewl ;-)
Der Hype ist vorbei und hat mich nicht mal
periphaer tangiert.
Wenn Du was wirklich neues lernen willst, haette
ich Ruby bzw. Ruby-on-Rails zu bieten. Hat mich
echt vom Hocker gehauen.
Und is at present so kewl, man!
> Irgendwie sehen die Perl-Lösungen für die
> Py-Challenge schöner aus :-((
Perl ist halt post-modern.
T.