Add cuneiforme number support to annna. - annna - Annna the nice friendly bot. | |
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
commit 446ead25be8c9a927e75b0cdc465c9025567f7d2 | |
parent efcd795d1ed9c33eb40c95ee8937c768dcf7a0d5 | |
Author: Annna Robert-Houdin <[email protected]> | |
Date: Fri, 11 Apr 2025 17:19:13 +0200 | |
Add cuneiforme number support to annna. | |
Diffstat: | |
M annna-message-common | 5 +++++ | |
A int2cunei | 94 +++++++++++++++++++++++++++++… | |
2 files changed, 99 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/annna-message-common b/annna-message-common | |
@@ -725,6 +725,11 @@ case "${text}" in | |
suri="$(pohlcode.awk "${word}" | head -n 1)" | |
annna-say -s "${server}" -c "${channel}" "${suri}" | |
;; | |
+"${ircuser}, please cunei "*) | |
+ word="$(printf "%s\n" "${text}" | cut -c 21- | sed 's,\t, ,g')" | |
+ suri="$(int2cunei "${word}" | head -n 1)" | |
+ annna-say -s "${server}" -c "${channel}" "${suri}" | |
+ ;; | |
"${ircuser}, what can I cook with "*) | |
ingredients="$(printf "%s\n" "${text}" | cut -c 29- | sed 's,\t, ,g… | |
case "$ingredients" in | |
diff --git a/int2cunei b/int2cunei | |
@@ -0,0 +1,94 @@ | |
+#!/usr/bin/env python | |
+# coding=utf-8 | |
+# | |
+# Idea from: https://trinket.io/python/3023f6104c42 | |
+# | |
+ | |
+import os | |
+import sys | |
+import getopt | |
+import math | |
+ | |
+def usage(app): | |
+ app = os.path.basename(app) | |
+ print("usage: %s [-h] int" % (app), file=sys.stderr) | |
+ sys.exit(1) | |
+ | |
+def main(args): | |
+ try: | |
+ opts, largs = getopt.getopt(args[1:], "h") | |
+ except getopt.GetoptError as err: | |
+ print(str(err)) | |
+ usage(args[0]) | |
+ | |
+ for o, a in opts: | |
+ if o == "-h": | |
+ usage(args[0]) | |
+ else: | |
+ assert False, "unhandled option" | |
+ | |
+ if len(largs) < 1: | |
+ usage(args[0]) | |
+ | |
+ inint = int(largs[0]) | |
+ | |
+ symbol_list=['-',"𒐕"] | |
+ symbol_list.append("𒐖") | |
+ symbol_list.append("𒐗") | |
+ symbol_list.append("𒐘") | |
+ symbol_list.append("𒐙") | |
+ symbol_list.append("𒐚") | |
+ symbol_list.append("𒑂") | |
+ symbol_list.append("𒑄") | |
+ symbol_list.append("𒑆") | |
+ symbol_list.append("𒌋") | |
+ for i in range(1,10): | |
+ symbol_list.append(symbol_list[10]+symbol_list[i]) | |
+ symbol_list.append(symbol_list[10]+symbol_list[10]) | |
+ for i in range(1,10): | |
+ symbol_list.append(symbol_list[20]+symbol_list[i]) | |
+ symbol_list.append(symbol_list[10]+symbol_list[10]+symbol_list[10]) | |
+ for i in range(1,10): | |
+ symbol_list.append(symbol_list[30]+symbol_list[i]) | |
+ symbol_list.append("𒑩") | |
+ for i in range(1,10): | |
+ symbol_list.append(symbol_list[40]+symbol_list[i]) | |
+ symbol_list.append("𒑪") | |
+ for i in range(1,10): | |
+ symbol_list.append(symbol_list[50]+symbol_list[i]) | |
+ | |
+ def numberToBase(n, b): | |
+ if n == 0: | |
+ return [0] | |
+ digits = [] | |
+ while n: | |
+ digits.append(int(n % b)) | |
+ n //= b | |
+ return digits[::-1] | |
+ | |
+ def baseToInt(l, b): | |
+ rint = 0 | |
+ i = 0 | |
+ for d in reversed(l): | |
+ rint += d * (b**i) | |
+ i += 1 | |
+ return rint | |
+ | |
+ def cunei_print(l): | |
+ s = "" | |
+ for d in range(len(l)): | |
+ s += symbol_list[l[d]] + "" | |
+ return s | |
+ | |
+ def find_leg(w,d): | |
+ return math.sqrt(d * d - w * w) | |
+ | |
+ base = numberToBase(inint, 60) | |
+ cuneis = cunei_print(base) | |
+ print("%s" % (cuneis)) | |
+ | |
+ return 0 | |
+ | |
+if __name__ == "__main__": | |
+ sys.exit(main(sys.argv)) | |
+ |