(ns challenge0156-hard.core
(:require [clojure.java.io :refer [reader]]))
(defn upside-down-char [c]
(case c
\b \q
\q \b
\d \p
\p \d
\n \u
\u \n
\a \u0250
\c \u0254
\e \u01dd
\f \u025f
\g \u0253
\h \u0265
\i \u0131
\j \u027e
\k \u029e
\m \u026f
\r \u0279
\t \u0287
\v \u028c
\w \u028d
\y \u028e
\M \W
\W \M
\A \u2200
\B (apply str (Character/toChars 0x10412))
\C \u0186
\D \u15e1
\E \u018e
\F \u2132
\G \u2141
\J \u017f
\K \u22ca
\L \u2142
\P \u0500
\Q \u038c
\R \u1d1a
\T \u22a5
\U \u2229
\V \u039b
\Y \u2144
\6 \9
\9 \6
\7 \u3125
\5 \u078e
\4 \u3123
\3 \u218b
\2 \u218a
\1 \u21c2
\. \u02d9
\! \u00a1
\? \u00bf
c))
(defn upside-down-line [line]
(apply str (map upside-down-char (reverse line))))
(defn upside-down-text []
(doseq [line (reverse (line-seq (reader *in*)))]
(println (upside-down-line line))))
(upside-down-text)
KG5zIGNoYWxsZW5nZTAxNTYtaGFyZC5jb3JlCiAgKDpyZXF1aXJlIFtjbG9qdXJlLmphdmEuaW8gOnJlZmVyIFtyZWFkZXJdXSkpCgooZGVmbiB1cHNpZGUtZG93bi1jaGFyIFtjXQogIChjYXNlIGMKICAgIFxiIFxxCiAgICBccSBcYgogICAgXGQgXHAKICAgIFxwIFxkCiAgICBcbiBcdQogICAgXHUgXG4KICAgIFxhIFx1MDI1MAogICAgXGMgXHUwMjU0CiAgICBcZSBcdTAxZGQKICAgIFxmIFx1MDI1ZgogICAgXGcgXHUwMjUzCiAgICBcaCBcdTAyNjUKICAgIFxpIFx1MDEzMQogICAgXGogXHUwMjdlCiAgICBcayBcdTAyOWUKICAgIFxtIFx1MDI2ZgogICAgXHIgXHUwMjc5CiAgICBcdCBcdTAyODcKICAgIFx2IFx1MDI4YwogICAgXHcgXHUwMjhkCiAgICBceSBcdTAyOGUKICAgIFxNIFxXCiAgICBcVyBcTQogICAgXEEgXHUyMjAwCiAgICBcQiAoYXBwbHkgc3RyIChDaGFyYWN0ZXIvdG9DaGFycyAweDEwNDEyKSkKICAgIFxDIFx1MDE4NgogICAgXEQgXHUxNWUxCiAgICBcRSBcdTAxOGUKICAgIFxGIFx1MjEzMgogICAgXEcgXHUyMTQxCiAgICBcSiBcdTAxN2YKICAgIFxLIFx1MjJjYQogICAgXEwgXHUyMTQyCiAgICBcUCBcdTA1MDAKICAgIFxRIFx1MDM4YwogICAgXFIgXHUxZDFhCiAgICBcVCBcdTIyYTUKICAgIFxVIFx1MjIyOQogICAgXFYgXHUwMzliCiAgICBcWSBcdTIxNDQKICAgIFw2IFw5CiAgICBcOSBcNgogICAgXDcgXHUzMTI1CiAgICBcNSBcdTA3OGUKICAgIFw0IFx1MzEyMwogICAgXDMgXHUyMThiCiAgICBcMiBcdTIxOGEKICAgIFwxIFx1MjFjMgogICAgXC4gXHUwMmQ5CiAgICBcISBcdTAwYTEKICAgIFw/IFx1MDBiZgogICAgYykpCgooZGVmbiB1cHNpZGUtZG93bi1saW5lIFtsaW5lXQogIChhcHBseSBzdHIgKG1hcCB1cHNpZGUtZG93bi1jaGFyIChyZXZlcnNlIGxpbmUpKSkpCgooZGVmbiB1cHNpZGUtZG93bi10ZXh0IFtdCiAgKGRvc2VxIFtsaW5lIChyZXZlcnNlIChsaW5lLXNlcSAocmVhZGVyICppbiopKSldCiAgICAocHJpbnRsbiAodXBzaWRlLWRvd24tbGluZSBsaW5lKSkpKQoKKHVwc2lkZS1kb3duLXRleHQp
VGhpcyBpcyBzb21lIHRleHQgdGhhdCBJIGFtIHdyaXRpbmchClNvb24gaXQgd2lsbCBiZSBqdXN0IDQgbGluZXMgb2YgdXBzaWRlIGRvd24gdGV4dC4KSG93IGRpZCB0aGV5IGRvIGl0PyAKV2Ugd2lsbCBhbGwga25vdyBzb29uLg==
This is some text that I am writing!
Soon it will be just 4 lines of upside down text.
How did they do it?
We will all know soon.