Archiv des Autors: Kilian Evang

Palindrome

I’m beginning to teach myself Haskell, because we all have to. I started doing the 99 Haskell problems and came across a beautifully cunning solution to problem 6, “Find out whether a list is a palindrome.” Let’s first look at the classic solution, which is maximally declarative. I use Prolog here to formulate it:

palindrome(X) :-
  reverse(X,X).

It reverses the list, then checks if the result is the same as the original (that’s the definition of a palindrome). It checks that by going through both lists and comparing elements at corresponding positions.

What’s ugly about this is that this is at least twice as many comparisons as needed. Since we know one list is the reverse of the other, it suffices to compare the first half of one to the last half of the other. (In lists of odd length, the center element does not need to be compared at all, since it is always identical to itself.)

Alternatively, we could just traverse the list to check, carrying along a reversed version of what we have traversed so far, stop in the middle and then compare the reversed first half to the remainder (i.e. to the last half). The problem is: where to stop? We don’t know the length of the list until we have traversed the whole of it, hence we also don’t know what half its length is.

Enter the intriguing solution that was given on the Haskell Wiki, humbly titled “Here’s one that does half as many compares”, and that gave me a very nice lightbulb moment when I had gotten my head around it. Here’s my Prolog translation:

palindrome(List) :-
palindrome(List,[],List).

palindrome([First|Rest],Rev,[_,_|Rest2]) :-
  palindrome(Rest,[First|Rev],Rest2).
palindrome([_|Rev],Rev,[_]).
palindrome(Rev,Rev,[]).

The trick is to carry along a second copy of the original list, popping two elements from it every time we pop one from the main copy. This way, when we reach the end of the second copy, we know we have reached the center of the first. There’s two recursion-ending clauses, one for odd-length and one for even-length lists. Ingenious!

Neue Wörter (5)

ˈBlech·schat·ten <m. 4> Bereich hinter einem Auto, in dem man als Fahrradfahrer sicher ist, weil eventuell heranrasendes Blech durch dieses abgefangen würde; vgl. Windschatten; Im Blechschatten des Kombis bog ich verbotenerweise links ab
bom·barˈbie·ren <V. t.> jdn. ~ jmdm. die Frisur versäbeln
ˈDum·mer <m. 3> neue Errungenschaft der Computerlinguistik: Schieberegler, mit dem sich ein Text stufenlos „runterdummen“, also in der Verständlichkeit verbessern lässt

Blogspektrogramm #12

Hängt das wirtschaftliche Verhalten eines Volkes mit der Zukunftsbezogenheit seiner Sprache zusammen? Woher kommt das Wort Gegenwart? Welche Wörter sind in Goethes Faust am häufigsten und am seltensten? Was ist von dem heftig umstrittenen Buch Kiezdeutsch der Linguistin Heike Wiese zu halten? Wie kann man den französischen Satzbau so beschreiben, dass er auf einen Spickzettel passt? Was ist der Unterschied zwischen Inhalt und Content? Was bedeutete das Wort digital ursprünglich? Eilen Sie ins Schplock, lesen Sie das Blogspektrogramm #12, und es wird Ihnen geantwortet werden!

Zugegebenermaßen aus dem Kontext gerissen

Die aktuelle Zeit interviewt die grüne NRW-Spitzenkandidatin Sylvia Löhrmann:

ZEIT: Wenn man Politik für Nordrhein-Westfalen macht, segelt man da nicht immer hart an der Depression vorbei? Hier eine geschlossene Zeche, da eine Stahlruine, überall Zeichen früherer Größe?

Löhrmann: Nein, Nordrhein-Westfalen lebt und schillert. Zum Beispiel in Recklinghausen, da gibt es jetzt einen Wanderweg auf einer ehemaligen Kohlehalde.

Einen Wan… na, dann muss man sich um die Zukunft NRWs ja keine Sorgen mehr machen.

Blogspektrogramm #11

Welche Bedeutungen und Wertungen verbinden sich mit dem Verb wulffen und seinen diversen Ableitungen? Woher kommt das Wort Lawine? Wie hat das Wort Shitstorm es geschafft, den deutschen Sprachraum im Sturm zu erobern? Wie lässt sich das Raubmordkopieren noch steigern? Was ist der Unterschied zwischen Brunst und Brunft? Dies und mehr im Blogspektrogramm #11, diesmal bei Michael Mann im Lexikografieblog.

Wülste

Wissen Sie noch, die Bauchfrei-Mode? Jaja, einerseits fand ich es natürlich auch schlecht, wenn Mädchen sich diesem Mode-Diktat beugten. Andererseits fand ich es immer gut, dass dick zu sein für viele anscheinend kein Grund war, es nicht zu tun. Ich musste mir immer an den Kopf fassen, wenn es ausgerechnet das war, was die Leute aufregte. Ist es dieselbe Toleranz für Wülste, die mich den Fiat Multipla für ein ganz schönes Auto halten lässt?

Umschlaggestaltung

Das Tollste an Reclam-Heften ist ja ihr knallig einfarbiger Umschlag, der gelangweilten Schüler/inne/n reichen Gestaltungsspielraum bietet. Anlässlich der jüngsten Neugestaltung der Reclam-Hefte erfuhr ich, dass es auch einen Reclam-Band gibt, der solcherart neu gestaltete Umschlagvorderseiten zeigt. Ich bestellte ihn, erhielt ihn heute und stelle hiermit zur Schau, dass auch ich dieser Kunstgattung eine Weile lang zugeneigt war. Ich zierte meine Hefte mit Schwarzweißversionen der Logos von Audiogalaxy, Sony Ericsson und Three:

Was ich mal gesagt habe (3)

Eigenlob der geglückten Formulierung. Was bisher geschah: Was ich mal gesagt habe, Was ich mal gesagt habe (2).

  1. Faulheit ist kein Selbstzweck. Nichts zu unternehmen, wo nichts nötig ist und keine Lust besteht, schont Ressourcen wie Zeit und Lebenslust.
  2. Ich werde jetzt meine Aufmerksamkeit zu deinen Ungunsten umwidmen.
  3. Hört sich schlimmer an, als es ist, ist es aber nicht.
  4. Ich hatte mir die Fotos gar nicht angeguckt. Ich bin mehr so auf Text.
  5. “…is markedly lower…”, “…had a strong effect…”, “…produces noticeably better results…”, “…was shown to have a substantial impact…” – one can go a long way without using the word “significant” once!
  6. Mein ansonsten sehr offenherziger innerer Kunstkritiker hat’s jedenfalls nicht wollen gelten lassen.
  7. There’s a couple of reasons why it’s already 2011.
  8. Liebe Eingeweihten und Einzuweihenden, (…)
  9. Ja, wenn du das so framest.
  10. Metaphern sind dazu da, unvermittelt gewechselt zu werden.
  11. Hier noch zwei Dialoge, die ich nicht nur gewissenhaft mitgeschrieben, sondern auch durch minutiöses Aufjazzen den Niederungen der Wortwörtlichkeit entzogen habe.
  12. Genau solche Vorschläge sind es, die eine starke Demokratie aushalten muss.
  13. Mach dir übrigens keinen Stress. Ich müsste lügen, um zu behaupten, ich könnte es erwarten, aber man wächst ja mit seinen Aufgaben.
  14. Most of the things I say are basically Max Goldt quotes.
  15. Ich hatte meinen Holzhammer gerade nicht griffbereit.