(def winner {#{:goo :choki} :goo #{:choki :par} :choki #{:par :goo} :par})
(defn n-janken [hands]
(let [variety (distinct (vals hands))
win-hand (winner (set variety))]
(if (#{1, 3} (count variety))
:even (keys (filter (fn [[k v]] (= v win-hand)) hands)))))
(def hands1 {:alice :goo, :tom :choki, :wendy :par, :smith :goo})
(def hands2 {:alice :goo, :tom :choki, :wendy :goo, :smith :goo})
(def hands3 {:alice :par, :tom :par, :wendy :par, :smith :par})
(println hands1)
(println (n-janken hands1))
(println hands2)
(println (n-janken hands2))
(println hands3)
(println (n-janken hands3))
(defn create-players
([] (create-players nil))
([n]
(let [num-players (or n (+ 1 (rand-int 10)))
typeofnames [:alice :john :tom :paul :alisa :emilia :fred :criss :smith :malia]
typeofhands [:goo :choki :par]
hands (repeatedly num-players #(rand-nth typeofhands))
names (shuffle typeofnames)]
(apply hash-map (interleave names hands)))
))
(let [pls (create-players 1)]
(println pls)
(println (n-janken pls)))
(let [pls (create-players 2)]
(println pls)
(println (n-janken pls)))
(let [pls (create-players)]
(println pls)
(println (n-janken pls)))
KGRlZiB3aW5uZXIgeyN7OmdvbyA6Y2hva2l9IDpnb28gI3s6Y2hva2kgOnBhcn0gOmNob2tpICN7OnBhciA6Z29vfSA6cGFyfSkKCihkZWZuIG4tamFua2VuIFtoYW5kc10KICAobGV0IFt2YXJpZXR5IChkaXN0aW5jdCAodmFscyBoYW5kcykpCiAgICAgICAgd2luLWhhbmQgKHdpbm5lciAoc2V0IHZhcmlldHkpKV0KICAgIChpZiAoI3sxLCAzfSAoY291bnQgdmFyaWV0eSkpCiAgICAgIDpldmVuIChrZXlzIChmaWx0ZXIgKGZuIFtbayB2XV0gKD0gdiB3aW4taGFuZCkpIGhhbmRzKSkpKSkKCihkZWYgaGFuZHMxIHs6YWxpY2UgOmdvbywgOnRvbSA6Y2hva2ksIDp3ZW5keSA6cGFyLCA6c21pdGggOmdvb30pCihkZWYgaGFuZHMyIHs6YWxpY2UgOmdvbywgOnRvbSA6Y2hva2ksIDp3ZW5keSA6Z29vLCA6c21pdGggOmdvb30pCihkZWYgaGFuZHMzIHs6YWxpY2UgOnBhciwgOnRvbSA6cGFyLCA6d2VuZHkgOnBhciwgOnNtaXRoIDpwYXJ9KQoKKHByaW50bG4gaGFuZHMxKQoocHJpbnRsbiAobi1qYW5rZW4gaGFuZHMxKSkKKHByaW50bG4gaGFuZHMyKQoocHJpbnRsbiAobi1qYW5rZW4gaGFuZHMyKSkKKHByaW50bG4gaGFuZHMzKQoocHJpbnRsbiAobi1qYW5rZW4gaGFuZHMzKSkKCihkZWZuIGNyZWF0ZS1wbGF5ZXJzIAogIChbXSAoY3JlYXRlLXBsYXllcnMgbmlsKSkKICAoW25dCiAgKGxldCBbbnVtLXBsYXllcnMgKG9yIG4gKCsgMSAocmFuZC1pbnQgMTApKSkKICAgICAgICB0eXBlb2ZuYW1lcyBbOmFsaWNlIDpqb2huIDp0b20gOnBhdWwgOmFsaXNhIDplbWlsaWEgOmZyZWQgOmNyaXNzIDpzbWl0aCA6bWFsaWFdCiAgICAgICAgdHlwZW9maGFuZHMgWzpnb28gOmNob2tpIDpwYXJdCiAgICAgICAgaGFuZHMgKHJlcGVhdGVkbHkgbnVtLXBsYXllcnMgIyhyYW5kLW50aCB0eXBlb2ZoYW5kcykpCiAgICAgICAgbmFtZXMgKHNodWZmbGUgdHlwZW9mbmFtZXMpXQogICAgKGFwcGx5IGhhc2gtbWFwIChpbnRlcmxlYXZlIG5hbWVzIGhhbmRzKSkpCikpCgoobGV0IFtwbHMgKGNyZWF0ZS1wbGF5ZXJzIDEpXSAKKHByaW50bG4gcGxzKQoocHJpbnRsbiAobi1qYW5rZW4gcGxzKSkpCgoobGV0IFtwbHMgKGNyZWF0ZS1wbGF5ZXJzIDIpXSAKKHByaW50bG4gcGxzKQoocHJpbnRsbiAobi1qYW5rZW4gcGxzKSkpCgoobGV0IFtwbHMgKGNyZWF0ZS1wbGF5ZXJzKV0gCihwcmludGxuIHBscykKKHByaW50bG4gKG4tamFua2VuIHBscykpKQ==
{:alice :goo, :tom :choki, :wendy :par, :smith :goo}
:even
{:alice :goo, :tom :choki, :wendy :goo, :smith :goo}
(:alice :wendy :smith)
{:alice :par, :tom :par, :wendy :par, :smith :par}
:even
{:fred :par}
:even
{:criss :choki, :paul :par}
(:criss)
{:fred :par, :alice :goo, :tom :choki, :emilia :choki, :criss :choki, :alisa :choki, :smith :choki, :paul :choki, :malia :choki, :john :par}
:even