Loading ⌛ Loading ⌛
Schreibe einen Algorithmus, der Zahlen, die als Striche (I+
) dargestellt werden, addieren kann. Z.B.
IIII + III + I
IIIIIIII
Loading ⌛
/ \+ //
Erläuterung: Damit das Zeichen +
nicht als Steuerzeichen interpretiert wird, muss man dies mit einem \
markieren.
/[^I]//g
Erläuterung: Die Variante B entfernt alle Zeichen die kein I
sind.
Schreibe einen Algorithmus, der Zahlen, die als Striche (I+
) dargestellt werden, subtrahieren kann. Z.B.
IIII - III
I
Loading ⌛
1. Versuch:
/II - II/I - I/ /I - I//
Der Algorithmus löst alle Aufgaben der Form (I+)(I*) - \I
bzw. (n + m) - n für n>1 und m>0 zuverlässig. Aufgaben mit einem Resultat < 0 werden falsch gelöst; der Algorithmus liefert den Betrag zurück.
2. Versuch:
/II - II/I - I/ /^I - II/- I/ ! /I - I//
Der Algorithmus löst nun alle Aufgaben der Form I+ - I+
korrekt, auch solche die ein negatives Resultat zurückgeben. Eine Verkettung von Subsitutionen der Form I+ (- I+)+
ist jedoch nicht möglich.
/(I*) - \1$//
Dieser Algoithmus berechnet alle Substraktionen die ein Resultat ≤ 0 haben. Ansonsten bleibt die Eingabe unverändert.
/I - I/ - /g / - $//g
Schreibe einen Algorithmus, der dein Lieblingszitat plus zwei Leerzeilen an den Anfang einer beliebigen Eingabe einfügt. Beispiel:
Es war einmal ....
"They are not organized!" Es war einmal ...
Loading ⌛
//"They are not organized!"\n\n/!
Erläuterungen: Das leere Wort wird gleich am Anfang des Textes gefunden.
Schreibe einen Algorithmus, der zwei Leerzeilen und ©-Notiz an einen beliebigen Text anfügt. Beispiel:
Es war einmal ....
Es war einmal ... © by BOFH, 2012
Loading ⌛
/$/\n\n© by BOFH, 2012/!
Erläuterungen: $
markiert das Ende des Textes.
Gäbe es das $
-Zeichen zum Markieren des Wortendes nicht, so müsste jeweils der ganze Text mit in Betracht gezogen werden:
/.*/$&\n\n© by BOFH, 2012/ !
Schreibe einen Algorithmus, der eine Reihe gleicher Zeichen auf ein Zeichen reduziert. Ansonsten wird ERROR
ausgegeben.
aaaaaaaaaaaaaaaaaaa
a
Loading ⌛
/^(.)\1*$/$1/ ! /.*/ERROR/ !
Schreibe eine Algorithmus, der jeweils die ersten zwei Buchstaben eines Wortes in einen Text drei mal wiederholt. Beispiel
Stottern, auch Balbuties, ist eine Störung des Redeflusses, welche durch häufige Unterbrechungen des Sprechablaufs, durch Wiederholungen von Lauten, Silben und Wörtern gekennzeichnet ist.
StStStottern, auauauch BaBaBalbuties, isisist eieieine StStStörururung dededes ReReRedeflusses, wewewelche dududurch häufufufige UnUnUnterbrechungen dededes SpSpSprechablaufs, dududurch WiWiWiederholungen vovovon LaLaLauten, SiSiSilben ununund Wörtrtrtern gegegekennzeichnet isisist.
Loading ⌛
/\b(\w{2})/$1$1$1/ig
Erläuterungen:
\b
(\w{2})
\w
\w
enthalten{2}
\w
sich wiederholt (i.a.W wir wollen zwei Buchstaben)
Schreibe einen Markow Algorithmus, der für eine Eingabe prüft ob es sich um ein Palindrom handelt: Ausgabe 1
, sonst 0
.
Loading ⌛
/^(.)(.*)\1$/$2/ /^.?$/1/! /.*/0/!
Schreibe einen Algorithmus, der aus der Eingabe ein Palindrom erzeugt. Beispiel:
reit
reittier
Loading ⌛
/(.)ξ(.*)/ξ$1$2$1/ /ξ//! /$/ξ/
Erläuterungen: Beachte zuerst die beiden Regeln
/(.)ξ(.*)/ξ$1$2$1/ /ξ//! /$/ξ/
Das ist eine Programmtechnik die in vielen Markow-Algorithmen zu finden ist. Ein bestimmter Marker wird eingefügt (als letzte Regel). Und als vorletzte Regel wird der Marker wieder entfernt und die Ausführung stoppt. Die Idee ist folgende: Sämtliche andere Regeln werden nur ausgeführt wenn ein bestimmter Marker vorliegt. In diesem Fall grenzt der Marker ξ den Teil des Wortes ab, der noch nicht bearbeitet wurde. Beachte wie er nach dem Einführen in jedem Schritt nach links rutscht bis das ganze Wort bearbeitet wurde.
Schreibe einen Algorithmus, der prüft ob ein Pangramm (ohne ä, ö, ü und ss) vorliegt. Beispiel:
Stanleys Expeditionszug quer durch Afrika wird von jedermann bewundert.
ok
Loading ⌛
/[^a-z]//ig entfernt alle nicht zählenden Zeichen /(.)(.*)\1/$1$2/ig entfernt alle mehrfach vorkommende Zeichen /.{26}/ok/ ! ok, falls 26 Zeichen vorhanden (stop) /.*/fail/ ! fail, sonst (stop)
Schreibe einen Markow Algorithmus, der 1
zurückgibt wenn die Länge einer Eingabe ungerade ist, und das leere Wort, wenn die Länge der Eingabe gerade ist.
Loading ⌛
/..//g /./1/!
Diese Lösung versagt beim Vorhandensein von Zeilenumbrücken \n
, da diese vom Jocker .
nicht erfasst werden. Alternative Lösung:
/^((.|\n)(.|\n))*$// ! /(.|\n)*/1/ !
Variante: Wie sieht die Lösung aus, wenn geprüft werden sollte, ob die Länge durch 8 ohne Rest teilbar ist? Lösung …
Arbeitsumgebung: http://exorciser.ch/dev/rema.html
Aufgaben
This work by Vincent Tscherter, vincent.tscherter@karmin.ch and Kurt Jakob, kurt.jakob@gmx.ch is licensed under Creative Commons Attribution-NonCommercial 3.0.