Sprachwahl im Linux-Magazin

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

BlackJack hat geschrieben:@audax: Dein Skript macht's genau falsch herum: Du nummerierst die Referenzen im Text fortlaufend von 1 an und die Fussnoten sind nicht numerisch aufsteigend. Das sollen sie aber soweit ich das verstanden habe, und die anderen implementiert haben, auf jeden Fall sein. Macht auch mehr Sinn wenn man beim Lesen den Text zu einer Referenz sucht.
hm...k, hatte mich schon gewundert :/
Dann werd ich es wohl mal umschreiben....

€dit:
Nochmal zum Mitschrieben für blöde:
Ich nummeriere die Fußnoten durch und ersetzt dann im Text die alte Referenz mit der neuen?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

http://paste.pocoo.org/show/84310

So, nun isses aber richtig :D
habs noch ein bischen aufgeräumt, die eine Funktion wurde mir etwas zu groß :)
BlackJack

Grundfunktion sieht okay aus, aber ``-a`` nicht. Da sollten dann die Referenzen im Text fortlaufend durchnummeriert sein und die Fussnoten dazu passend sortiert. Eben das Ergebnis was man eigentlich haben möchte.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

aber -a tut genau das gleiche wie das "offizielle"-python Skript :(

Also im Text[1] fortlaufend[2] nummeriert[3] und die

[1] Fußnoten dazu
[2] passend
[3] sortiert?

*alles umschmeiß*


Irgendwie bin ich heute zu doof dafür :D
BlackJack

Also dieses Skript tut das nicht: http://paste.pocoo.org/show/84310/

Code: Alles auswählen

bj@s8n:~$ python audax.py -a test.txt
A great brown fox [1] jumped of a pile of lorem ipsum [2], [4]. He met
with a silver penguin, browsing the Linux Kernel Mailinglist [5]. They
debated other the question whether to start a C-program with "main
(int argc, char **argv)" or with "main (int argc, char *argv[])".
Square brackets annoyed them [3].

@footnote:
@footnotes:

[1] Al Fabetus: "On characters and animals", 1888, self published.
[2] Lorem Ipsum, <a href="http://en.wikipedia.org/wiki/Lorem_ipsum">Web Link</a>
[4] B. Fox: "More on Blind Text".
[5] Linux Kernel Maintainers: LKML
[3] Annoying Link.
Die Reihenfolge der *Texte* der Fussnoten stimmt, aber die Numerierung stimmt weder im Text, noch in den Fussnoten. Beim "offiziellen" Python-Skript sind die Nummern sowohl im Text als auch in den Fussnoten fortlaufend.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

% python footnotes.py --test -a
A great brown fox [1] jumped of a pile of lorem ipsum [2],
[3]. He met with a silver penguin, browsing the Linux Kernel
Mailinglist [4]. They debated whether to start a C-program with
"main (int argc, char **argv)" or with "main (int argc, char *argv[])".
Square brackets annoyed them [5]. Multiple references exist [2].


[1] Al Fabetus: "On characters and animals", 1888, self published.
[2] Lorem Ipsum, <a href="http://link.org/Lorem_Ipsum">Web
Link</a>
[3] B. Fox: "More on Blind Text".
[4] Linux Kernel Maintainers: LKML
[5] Annoying Link.
Ich hoffe doch, nun hab ich es ;)
Wenn man einmal was völlig dämliches im Kopf hat..gnargh.

Und Morgen kommt noch ein kleines Stück Redundanz raus.

http://paste.pocoo.org/show/84315
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin allerseits,

hab mich auch mal dran versucht - from scratch :-).

http://paste.pocoo.org/show/84336/

Braucht bei mir für die 54MB-Datei ca. 16 Sekunden. Einen (mir bekannten) Bug hat es noch: Nicht existierende Fußnoten im Text bekommen ebenfalls eine neue Nummer.

Gruß,
Manuel
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Und hast trotzdem den gleichen Ansatz wie ich, Hello World (in C++) und SidBurn (Perl) :D

Zur Rerefenz: Braucht bei mir 19s
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

audax hat geschrieben:Und hast trotzdem den gleichen Ansatz wie ich, Hello World (in C++) und SidBurn (Perl) :D

Zur Rerefenz: Braucht bei mir 19s
Ich hab mir deinen Code ehrlich gesagt noch gar nicht genau angeschaut. Aber er ist bei mir 4 Sekunden schneller :? . Die Rache kommt nicht ;-) .

Gruß,
Manuel
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Schön sauberen Lösung!
Die Performance ist auch erstaunlich ok. (20s bei mir)
Ist auf jedenfall ne pythonische Vorzeigelösung. :)
BlackJack

Und ein Update: http://paste.pocoo.org/show/84647/

• Docstrings hinzugefügt.
• Die Zeichenkette für den Fussnotentrenner ist in die `Document`-Klasse gewandert und könnte jetzt als Argument übergeben werden.
• Fehler in `Footnotes.reorder()` behoben: Die Methode kam nicht mit Referenzen zurecht, zu denen es keine Fussnote gibt.
• `Document.__init__()` und `Document.parse()` nehmen Flags für die Überfüfung von Referenzen ohne Fussnote und Fussnoten ohne Referenz entgegen.

Ich habe es auch mal mit anderen Python-Implementierungen ausprobiert: IronPython auf Mono braucht Unmengen an Speicher und 1 Minute, 50 Sekunden. Aktuelle Jython Beta steigt mit einem `MemoryError` aus.
BlackJack

Die haben jetzt die Einsendungen vom gemeinen Volk gesichtet und ausprobiert. Die Quelltexte können hier bestaunt werden: ftp://linux-magazin.de/pub/listings/mag ... /sprachen/

Sind einige Python-Lösungen dabei. Meins ist als `045.py` enthalten und liegt von der Geschwindigkeit her im Mittelfeld unter allen Lösungen.
Antworten