Download Jar. Uses 4489K of libraries. Click here for Pure Java version (13579L/98K).
1 | !7 |
2 | |
3 | sS theRiddle = [[ |
4 | Was hatte Magnus Carlsen zum Frühstück? |
5 | ]]; |
6 | |
7 | sS theFacts = [[ |
8 | Magnus Carlsen wohnt in Norwegen. |
9 | In Norwegen isst man Fisch. |
10 | Jan Gustafsson wohnt in Deutschland. |
11 | In Deutschland isst man Bratwurst. |
12 | |
13 | (Q: Was hatte X zum Frühstück?) und (X wohnt in Y.) und (In Y isst man Z.) => (A: Wahrscheinlich Z!) |
14 | ]]; |
15 | |
16 | sS concepts = [[ |
17 | ["vouwrrhtmajsgaby", "Q: X"], |
18 | ["nywfcwkkcknzhmdy", "A: X"], |
19 | ["bzvabitchqhqkldm", "In X isst man Y."], |
20 | ["pizxszvxocdluica", "Was hatte X zum Y?"], |
21 | ["fhsukilpoasgkvcs", "X wohnt in Y."], |
22 | ["oceicdfeiyftxuwi", "Wahrscheinlich X!"], |
23 | ["eijdjqhyzheusetj", "(X) und (Y) und (Z) => (AA)"], |
24 | ]]; |
25 | |
26 | svoid createWeb(Web web, Lisp riddle) {} |
27 | |
28 | svoid calc(Web web, Lisp riddle) { |
29 | //print("Vars: " + vars); |
30 | for (LispStatement ls : lispStatementsByHead("eijdjqhyzheusetj")) { |
31 | Lisp rule = ls.term; |
32 | L<Lisp> conditions = dropLast(rule.args); |
33 | Lisp out = last(rule.args); |
34 | |
35 | new Map<S, Lisp> matches; |
36 | if (matchConditions(conditions, matches, riddle)) { |
37 | //print("Yo! " + struct(matches)); |
38 | web.node(lispReplaceVars(out, matches)); |
39 | } |
40 | } |
41 | } |
42 | |
43 | static bool matchConditions(L<Lisp> conditions, Map<S, Lisp> m, Lisp riddle) { |
44 | if (empty(conditions)) true; |
45 | Lisp cond = first(conditions); |
46 | for (Lisp fact : concatLists(ll(riddle), facts)) { |
47 | Map<S, Lisp> m2 = cloneMap(m); |
48 | if (lispMatchIC_sub(cond, fact, vars, m2)) { |
49 | if (matchConditions(dropFirst(conditions), m2, riddle)) { |
50 | m.putAll(m2); |
51 | true; |
52 | } |
53 | } |
54 | } |
55 | false; |
56 | } |
57 | |
58 | sS getAnswer(Web web) { |
59 | Lisp l = web_nodeByHead(web, "nywfcwkkcknzhmdy"); |
60 | if (l != null) |
61 | ret crazyEnglishFixing(conceptLanguageToEnglish_rec(l.get(0))); |
62 | null; |
63 | } |
64 | |
65 | p { |
66 | setConsoleInput(firstLineFullTrim(theRiddle)); |
67 | pConsoleThoughtMachine(); |
68 | } |
69 | |
70 | !include #1007815 // Console Thought Machine |
Began life as a copy of #1007814
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1008140 |
Snippet name: | Magnus Carlsens Frühstück [translation of #1007814] |
Eternal ID of this version: | #1008140/3 |
Text MD5: | 60b03b0811c31ce530f35d29f27954b2 |
Transpilation MD5: | 3cded2d7f7f5c291e0ba5fffbd26d3e2 |
Author: | stefan |
Category: | javax |
Type: | JavaX source code (desktop) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-04-26 12:39:20 |
Source code size: | 1909 bytes / 70 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 639 / 1581 |
Version history: | 2 change(s) |
Referenced in: | [show references] |