Computerlogbuch

Friday, 21.04.2006

Der Geburtstagsdekoder


 Jakobs Torte.

Auf der Postkarte stand:

Lieber Wolfgang!

766F6964206D61696E2829
7B
416C6C657320477574653B
7A756D203B
47656275727473746167213B
7D3B

Viel Spaß beim decodieren
wünschen Dir

Rebekka & Gregor

Selbstredend, dass ich das nicht von Hand machen würde, sondern lieber dreimal so lange damit verbringe, ein cleveres Programm zu schreiben, was es für mich tut:

class BirthdayDecoder
    @@encoded = "766F6964206D61696E28297B416C6C657320477574653B7A756D203B47656275727473746167213B7D3B"

    def brute_force()
        decoded = []

        i = 0
        while i < @@encoded.length do
            char = @@encoded[i..i+1]
            decoded << char.to_i(16)
            i += 2
        end

        decoded.pack("c*")
    end

    def clever()
        @@encoded.unpack("a2" * (@@encoded.length / 2)).map { |c| c.to_i(16) }.pack("c*")
    end
end

Das Ergebnis ist:

irb(main):001:0> require "gregor"
=> true
irb(main):002:0> puts BirthdayDecoder.new.clever
=> "void main(){Alles Gute;zum ;Geburtstag!;};"
# 21.04.2006 19:28 · Tag
< voriger  nächster >

Antworten (1)

Die Diskussion ist geschlossen.