ed, 35 zeichen
s/[a-zA-Z]*\([a-zA-Z]\)\|./\1/g
p
Q
So endet die Welt in ed. Da ich gerne zu wörtlich bin, habe ich mich entschlossen zu schreiben, um die Lösung mit ed zu schreiben - und anscheinend ist es tatsächlich eine Programmiersprache . Es ist überraschend kurz, selbst wenn man bedenkt, dass es in diesem Thread bereits viele kürzere Lösungen gibt. Es wäre schöner, wenn ich etwas anderes als verwenden könnte [a-zA-Z], aber da ed keine Programmiersprache ist, ist es eigentlich gut genug.
Zunächst möchte ich sagen, dass dies nur die letzte Zeile in der Datei analysiert. Es wäre möglich, mehr zu analysieren. Geben Sie einfach ,am Anfang der ersten beiden Zeilen ein (dieser Bereich gibt "alles" an, im Gegensatz zum Standardbereich für die letzte Zeile), aber dies würde die Codegröße auf 37 Zeichen erhöhen.
Nun zu den Erklärungen. Die erste Zeile entspricht genau der Perl-Lösung (außer ohne Unterstützung für Unicode-Zeichen). Ich habe die Perl-Lösung nicht kopiert, sondern nur zufällig etwas Ähnliches erfunden.
In der zweiten Zeile wird die letzte Zeile gedruckt, sodass Sie die Ausgabe sehen können. Die dritte Zeile wird beendet - ich muss es tun, andernfalls wird edgedruckt ?, um Sie daran zu erinnern, dass Sie die Datei nicht gespeichert haben.
Nun, wie man es ausführt. Nun, es ist sehr einfach. Führen Sie einfach eddie Datei aus, die den Testfall enthält, und leiten Sie mein Programm so weiter.
ed -s testcase < program
-sist leise. Dies verhindert, dass zu edBeginn eine hässliche Dateigröße ausgegeben wird. Schließlich verwende ich es als Skript und nicht als Editor, sodass ich keine Metadaten benötige. Wenn ich das nicht tun würde, würde ed eine Dateigröße anzeigen, die ich sonst nicht verhindern könnte.