Seite 2 von 2
Verfasst: Mittwoch 3. September 2008, 20:25
von audax
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?
Verfasst: Mittwoch 3. September 2008, 22:02
von audax
http://paste.pocoo.org/show/84310
So, nun isses aber richtig

habs noch ein bischen aufgeräumt, die eine Funktion wurde mir etwas zu groß

Verfasst: Mittwoch 3. September 2008, 22:22
von 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.
Verfasst: Mittwoch 3. September 2008, 22:57
von audax
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

Verfasst: Mittwoch 3. September 2008, 23:20
von 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.
Verfasst: Mittwoch 3. September 2008, 23:37
von audax
% 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
Verfasst: Donnerstag 4. September 2008, 12:05
von helduel
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
Verfasst: Donnerstag 4. September 2008, 12:19
von audax
Und hast trotzdem den gleichen Ansatz wie ich, Hello World (in C++) und SidBurn (Perl)
Zur Rerefenz: Braucht bei mir 19s
Verfasst: Donnerstag 4. September 2008, 12:38
von helduel
audax hat geschrieben:Und hast trotzdem den gleichen Ansatz wie ich, Hello World (in C++) und SidBurn (Perl)
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
Verfasst: Donnerstag 4. September 2008, 14:21
von BlackJack
Verfasst: Freitag 5. September 2008, 12:09
von audax
Schön sauberen Lösung!
Die Performance ist auch erstaunlich ok. (20s bei mir)
Ist auf jedenfall ne pythonische Vorzeigelösung.

Verfasst: Sonntag 7. September 2008, 12:45
von 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.
Verfasst: Sonntag 9. November 2008, 14:32
von 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.