Dienstag, 26. Februar 2013

HTML in Blogger posten

Ich habe hier nun ein nettes kleines Tool gefunden, das mir HTML-Code in SimpleCode umwandelt, der in Blogger angezeigt werden kann. Problematisch scheinen dabei die Zeilenumbrüche zu sein und die eckigen Klammern, also < und >. Daraus ergibt sich für mich, dass sich das (bestimmt) auch einfach als Desktop-Tool mit GUI umsetzen lässt, denn die Korrekturen scheinen momentan nicht der Rede wert.

HTML-CODE Zeichen
< &lt;
> &gt;
\n <br />

Ferner muss oben und unten ein code-Tag ergänzt werden, wobei die Zeile ansonsten freibleibt. Auch das ist in Python nicht kompliziert umzusetzen.

Samstag, 23. Februar 2013

Zeilenumbruch in HTML

Es gibt aktuell drei Möglichkeiten einen Zeilenumbruch in HTML zu codieren, allerdings ist nur die erste Variante mit &shy; auch wirklich zu empfehlen, weil es erstens ein Trennstrich einfügt und zweitens nicht proprietär ist.

Freitag, 22. Februar 2013

Logelei

Im heutigen Zeit Magazin (21. Februar 2013, Nr. 9, S. 76) habe ich ein Rätsel in der Rubrik „Logelei“ gefunden.

Im Kern geht es darum die sechs Wörter TETRAEDER, WUERFEL, OKTAEDER, DODEKAEDER, IKOSAEDER und KUGEL so in einem Gitter von 16 Zellen zu verteilen, dass sie darin Platz finden. Der Start eines Wortes im Gitter ist beliebig und der nächste Buchstabe kann dann waagerecht, senkrecht oder diagonal benachbart sein. Buchstaben dürfen dabei in einem Wort mehrfach verwendet werden. Die Lösung sei eindeutig, so die Erklärung.

Das Gitter ist vorstrukturiert und sieht wie folgt aus:

Das Gitter mit drei eingetragenen Buchstaben
Als Tipp ist formuliert, dass, kommt ein Buchstabe mehrfach vor, dann jedes Mal derselbe Buchstabe im Gitter verwendet werden soll.

Arbeit an einer Lösung

Ein erster Zugriff ergibt, dass es insgesamt 14 Buchstaben gibt, die verteilt werden müssen und zwar:

A, D, E, F, G, I, K, L, O, R, S, T, U, W.

Da das T bereits zweimal gesetzt ist, darf nur ein weiterer Buchstabe ebenfalls zweimal im Gitter vorkommen. Es stellt sich die Frage, ob T besonders häufig vorkommt oder es eine andere Besonderheit gibt.

Zu den Buchstabenhäufigkeiten:

A   4
D   6
E  13
F   1
G   1
I   1
K   4
L   2
O   3
R   6
S   1
T   3
U   2
W   1


Also T ist nicht so häufig, d. h. A, D, E, K und R sind alle häufiger enthalten.

Andererseits kommt T nur in zwei Wörtern vor und zwar in TETRAEDER und OKTAEDER.

Ich habe mir einmal die Bindungen visualisiert, was folgendes Bild ergibt:
Ein Graph mit den Buchstaben und den Nachbarn
Problem ist hier aus meiner Sicht, dass T und E eigentlich doppelt eingetragen werden müssen. T ist bereits doppelt gesetzt und E hat laut Plan 8 Nachbarn, nämlich L, G, U, D, A, T, R und F, das E oben rechts in der Ecke hat aber nur 3 mögliche Nachbarn.


Lösung

Inzwischen ist die Lösung im Netz verfügbar, die wie folgt aussieht:

T
F
L
E
R
E
U
G
D
A
K
W
S
O
T
I

Donnerstag, 14. Februar 2013

CSS

Ich schaue mir augenblicklich etwas CSS an. Ich habe gestern mal eine Website in LibreOffice Draw entwickelt und Gestaltungselemente verbaut und somit ein Mockup gestaltet. Die Umsetzung in CSS und das Erlernen der notwendigen CSS-Elemente stelle ich mir momentan noch schwierig vor.

Im Prinzip stelle ich mir vor, dass CSS etwas wie die Formatvorlagen bei LibreOffice Writer sind. Mein Problem hierbei ist, dass ich noch nicht wirklich durchblicke, ob ich den Sachverhalt damit im ersten Schritt adäquat verstehe.

Ziel der ganzen Übung ist es ein eigenes Wordpress-Theme zu schreiben, dass ich dann später mit Inhalten füllen kann.

Literatur und Ressourcen

Folgende Ressourcen habe ich mir angesehen:

CSS

  • Kai Laborenz: CSS-Praxis. Browserübergreifende Lösungen. Bonn: Galileo Press 42006. ISBN 978-3-89842-765-4
  • Florence Maurice: Jetzt lerne ich CSS3. Modernes Webdesgin verstehen und anwenden. München: Markt+Technik Verlag 2012. ISBN 978-3-8272-4745-2

Wordpress-Theme


Erste Gehversuche

Hier muss noch Text hin.


Mittwoch, 13. Februar 2013

Ringworld

Ringworld (Problem 2, 2012) für 3 Punkte - bei manchen Aufgaben von HP Codewars versteht man die Punkteverteilung nicht. Ringworld ist eine der eher sehr einfachen Aufgaben:
pi = 3.14159265

for data in [(95000000,997000),(92955887.6,131072)]:

    ringworld_radius = data[0]
    ringworld_width = data[1]

    result = 2 * pi * ringworld_radius * ringworld_width

    result_earths = result / 196935000
        
    print("{} EARTHS".format(int(result_earths)))
Einzige Schwierigkeit bei der Aufgabe sind die verschiedenen Einheiten, die man leicht überließt, so dass es zu Fehlern im Programm kommen kann.

Während die Oberfläche der Erde in Millionen Quadratmeilen (million square miles) angegeben ist, werden der Radius und die Weite der Ringworld in Meilen angegeben (miles). Ist das erfasst, ist die Aufgabe mehr als simpel.

Montag, 11. Februar 2013

Secret Code

Eine einfache Verschlüsselungsübung, die ich mir noch einfacher gemacht habe. Das Skript ist zugleich Lösung für eine Aufgabenstellung des HP Codewars 2001:
data = """Hewlett-Packard Company, Year 2000 Financial Report
end"""

data = data.split("\n")

for line in data:
    ''' Das könnte man auch in eine Funktion
    packen, jedenfalls wird hier die Message
    verschlüsselt...

    '''
    # Um es mir einfach zu machen habe ich
    # zusätzlich zu den Großbuchstaben
    # auch die Kleinbuchstaben ins Code-
    # Wörterbuch aufgenommen...
    codes = {"A":"*",
             "a":"*",
             "E":"$",
             "e":"$",
             "I":"#",
             "i":"#",
             "O":"!",
             "o":"!",
             "U":"%",
             "u":"%",
             "Y":"^",
             "y":"^"}
    if line == "end":
        pass
    else:
        for key in codes.keys():
            line = line.replace(key,codes[key])        

        print(line)
Alternativ hätte man die Message Buchstabe für Buchstabe durchlaufen können und prüfen können, ob Buchstabe.upper() im Wörterbuch steht und die Daten dann entsprechend z. B. an eine Liste anhängen können. Das Ergebnis würde dann codiert zurückgegeben werden. Für 2 Punkte darf man es sich wohl einfacher machen.

Graphentheorie

Im Netz gibt es mehr oder weniger brauchbare Videos zum "kürzeste Wege-Problem", zu dessen Lösung der Dijkstra-Algorithmus genutzt wird.

Ein Graph sieht zu Beginn so aus:
Abb. 1: Gefunden werden soll die kürzeste Weg zwischen O und T.

Die Lösung sieht dann etwa so aus:
Abb. 2: Das Problem ist gelöst. Die kürzeste Route ist O, A, B, D, T.
Im Netz habe ich zu diesem Thema auf Anhieb ein Video gefunden:


Eine Beispielimplementierung in Python zum Algorithmus findet sich u. a. hier.