首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪而狂野的豆类游戏

奇怪而狂野的豆类游戏
EN

Code Golf用户
提问于 2017-06-09 11:49:32
回答 6查看 1.4K关注 0票数 11

也许你们中的一些人已经知道这个游戏了:你们有一组不同颜色的果冻豆。对于每一种颜色,豆可能有不同的口味,一些是好的,有些是坏的,你无法区分它们。你必须选择一个特定颜色的豆子,并祈祷你已经选择了一个好的。

因此,编写一个最短的程序,接收您选择的颜色(从给定的列表),并随机返回选择的味道。味道必须从内置的清单中挑选出来。可能的投入和产出清单如下:

代码语言:javascript
复制
Input      Output choices [only one from the list]
--------------------------------------------------
green      lawn clippings, lime, mucus, pear
yellow     rotten eggs, buttered popcorn
blue       toothpaste, blue berry
orange     vomit, peach
brown      canned dog food, chocolate
white      stinky socks, tutti-frutti, baby diapers, coconut

规则:

  • 您可以假设输入总是来自输入选项的颜色。
  • 大小写和尾随空格和/或换行符并不重要。
  • 输出必须是一致随机的:成功的程序执行必须产生不同的结果,并且对于列表中的所有口味,获得给定口味的机会必须相同。

这是密码-高尔夫,愿最短的节目获胜!

EN

回答 6

Code Golf用户

发布于 2017-06-09 12:01:23

JavaScript (ES6),235个字节

我需要弄清楚如何压缩JS中的字符串!

代码语言:javascript
复制
c=>(a="lawn clippings,lime,mucus,pear|rotten eggs,buttered popcorn|toothpaste,blue berry|vomit,peach|canned dog food,chocolate|stinky socks,tutti-frutti,baby diapers,coconut".split`|`["eluaoi".search(c[2])].split`,`)[new Date%a.length]

如果这对你的口味来说还不够“随机”,那么添加7个字节,用new Date代替Math.random()

代码语言:javascript
复制
c=>(a="lawn clippings,lime,mucus,pear|rotten eggs,buttered popcorn|toothpaste,blue berry|vomit,peach|canned dog food,chocolate|stinky socks,tutti-frutti,baby diapers,coconut".split`|`["eluaoi".search(c[2])].split`,`)[Math.random()*a.length|0]

试试看

代码语言:javascript
复制
f=
c=>(a="lawn clippings,lime,mucus,pear|rotten eggs,buttered popcorn|toothpaste,blue berry|vomit,peach|canned dog food,chocolate|stinky socks,tutti-frutti,baby diapers,coconut".split`|`["eluaoi".search(c[2])].split`,`)[Math.random()*a.length|0]

r=(d=document).createElement("input");r.name="i";r.type="radio";l=d.createElement("label");j="Kiwi,sour_lemon,berryBlue,OrangeSherbet,rootBeer,Coconut".split`,`;for(s in e="green,yellow,blue,orange,brown,white".split`,`){r=r.cloneNode();l=l.cloneNode();l.setAttribute("for",r.id=r.value=e[s]);l.style.backgroundImage=`url(https://cdn-tp1.mozu.com/9046-11441/cms//files/${j[s]}.jpg)`;g.prepend(r,l);}onchange=_=>o.innerText=(v=(i=d.querySelector(":checked")).value)+": "+f(v,i.checked=0)
代码语言:javascript
复制
body{align-items:center;background:#eee;display:flex;flex-wrap:wrap;height:100vh;justify-content:center;margin:0;text-align:center;}#g{background:#fff;box-shadow:5px 5px 5px #ccc;padding:10px;}input{display:none;}label{background-repeat:no-repeat;background-size:contain;cursor:pointer;display:inline-block;height:64px;margin:10px;width:75px;}#o{font-family:monospace;font-size:18px;margin:10px auto;text-align:center;width:100%;}
代码语言:javascript
复制
<div id=g><pre id=o>click a jelly bean</pre></div>
票数 5
EN

Code Golf用户

发布于 2017-06-09 12:20:19

05AB1E,126个字节

代码语言:javascript
复制
¨¤.•4Õ!Õ•.•QCQΓ^ïTÁÕ#HвΘÊÓΘñ…~çÌùY$J*shÉÉk‹Ú&žвZÍζö<^'¢βŽÚq¡eζd`Ãó¨₅γ!i"v_Ym¤ÓδVË5¥vżQЉøΣγ9∞\L‰,ǝ¦8VÜUт:x+sм•'x'-:'q¡'j¡€.R‡

解释:

代码语言:javascript
复制
¨¤                              Get the second to last character of the string
  .•4Õ!Õ•                       Compressed string: "eougwt"
         .• .. •                Compressed base-27 string
                'x'-:           Replace "x" with "-" (for tutti-frutti)
                     'q¡        Split on 'q'
                        'j¡     Split each on 'j'
                           €    For each...
                             .R  Select a random element
                               ‡ Transliterate

如果有人想知道,下面是未压缩的字符串:

代码语言:javascript
复制
lawn clippingsjlimejmucusjpearqrotten eggsjbuttered popcornqtoothpastejblue berryqvomitjpeachqcanned dog foodjchocolateqstinky socksjtuttixfruttijbaby diapersjcoconut

不过,我可能可以用一些巧妙的技巧和字典来压缩它。

在网上试试!

票数 5
EN

Code Golf用户

发布于 2017-06-09 12:39:03

Java,288个字节

代码语言:javascript
复制
s->{String[]a="lawn clippings,lime,mucus,pear#rotten eggs,buttered popcorn#toothpaste,blue berry#vomit,peach#canned dog food,chocolate#stinky socks,tutti-frutti,baby diapers,coconut".split("#")["eluaoi".indexOf(s.charAt(2))].split(",");return a[new java.util.Random().nextInt(a.length)];}

你自己试试!

可以用char[]来打高尔夫球。

然而,如果没有Random.nextInt(int)的显式使用,随机部分就不可能“均匀分布”。甚至(int)(Math.random()*a.length)也不是均匀分布的。

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/125582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档