(Arne Babenhauserheide)
2013-12-03: unkittify works. unkittify works.
diff --git a/examples/kit-encode.w b/examples/kit-encode.w --- a/examples/kit-encode.w +++ b/examples/kit-encode.w @@ -143,9 +143,54 @@ define : kittify numbers -display : kittify : map inexact->exact : take testnumbers 35 + +; unkittify: first take out "Karlsruher Institut fuer Technologie" and all spaces and linebreaks, then split by . and base60decode the result. + +; we first need a quick way to replace substrings in strings +; taken from string-replace-benchmark.w +define* + string-replace-substring s substr replacement + . #:optional (start 0) (end (string-length s)) + . "Replace every instance of substring in s by replacement." + let : : substr-length : string-length substr + if : zero? substr-length + error "string-replace-substring: empty substr" + let loop + : start start + pieces : list : substring s 0 start + let : : idx : string-contains s substr start end + if idx + loop : + idx substr-length + cons* replacement + substring s start idx + . pieces + string-concatenate-reverse + cons : substring s start + . pieces + + +define : emptystring? string + if : equal? "" string + . #t + . #f + +define : unkittify text + . "Turn a kittified string into a list of numbers." + ; first remove the name and spaces + let* + : text : string-replace-substring text "Karlsruher Institut fuer Technologie" "" + text : string-replace-substring text " " "" + text : string-replace-substring text "\n" "" + text : string-replace-substring text "\r" "" + base60numbers : string-split text #\. + base60numbers : remove emptystring? base60numbers + map base60decode base60numbers + +display : unkittify : kittify : map inexact->exact : take testnumbers 35 newline -; TODO: unkittify: first take out "Karlsruher Institut fuer Technologie" and all spaces, then split by . and base60decode the result. ; TODO: Final step: Take files, read them as bytevectors, turn the bytevectors into ints and encode them. Same in reverse. Then we can encode any file in kitty-style - uh I mean KIT-style :) + + +