首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >杠杆模拟器2015

杠杆模拟器2015
EN

Code Golf用户
提问于 2015-11-24 22:02:16
回答 5查看 4.9K关注 0票数 46

为什么是模拟器?

如今的孩子们既没有时间,也没有志向去把盒子堆在电锯上,或者玩平衡身体的东西。这给一个杠杆模拟器的软件市场留下了很大的空间,根据我的模型,它会像疯一样销售!

编程帮助需要

我已经申请了这样一个游戏的专利(待定),但需要一个专家程序员为我编写游戏逻辑。据我理解,根据最终程序的字节大小对程序员进行补偿是一种标准做法。因此,我将把这项利润丰厚的合同授予出价最低的投标人。

规范

杠杆是由一个支点平衡的一系列盒子或空空间。每个盒子有一个特定的重量,从1到9,空格没有重量。如你所知,一个箱子在杠杆上的重量与那个盒子离支点有多远成正比。一盒重量的4位于支点的第三个空间上,它将向杠杆的那一边贡献12有效的力单位。

我需要一个程序,给定一个输入杠杆,将输出该杠杆是向左倾斜,还是向右倾斜,还是完全平衡。

I/O指南

  • 你要给我写一个程序。
  • 输入将包含一行文本。
  • 输入将来自stdin或作为一个命令行字符串。
  • 框将由字符“1”和“9”表示。这些字符表示各自的权重。空空间将由空格‘’表示。支点将用插入符号“^”表示。

示例输入杠杆可能类似于:8 2^ 941

这个杠杆是完全平衡的:(4*8) + 0 + 0 + (1*2) == 0 + (2*9) + (3*4) + (4*1) == 34

  • 不会有前导和尾随的空间。不会有尾随的换行线。
  • 不需要处理格式错误的输入,输入总是有一个支点,只有数字和空格。
  • 输出将指示杠杆是左重、右重还是平衡.
  • 您的程序必须有三个可能的输出,这可能是由一个格式良好的输入.你可以选择这些是什么。
  • 输出必须打印到stdout,或者是程序的返回代码。

测试用例

这里我用LRB来表示左重,右重,平衡:

  1. 输入:11 ^9输出:B
  2. 输入:321^ 12输出:L
  3. 输入:9^ 1输出:R

(如果有人有一些“更棘手”的测试用例,可以随意编辑)。

Bibliography

不一定受到启发,但与使一组重量平衡在一只爪子上有关。

EN

回答 5

Code Golf用户

发布于 2015-11-25 01:45:17

杰夫特,22字节

Japt是JavaScript的简写版本。解释器

代码语言:javascript
复制
U¬r@X+~~Y*(Z-Ub'^),0 g

返回-1表示L0返回B1返回R

是如何工作的

代码语言:javascript
复制
Uq r@X+~~Y*(Z-Ub'^),0 g
                         // Implicit: U = input string
Uq r@              ,0    // Reduce the input by this function, starting at 0:
     X+~~Y*              //  Return the previous value, plus the current value times
           (Z-Ub'^)      //   the current index minus the index of "^" in U.
                      g  // Take the sign of the resulting number.
                         // Implicit: output last expression
票数 5
EN

Code Golf用户

发布于 2015-11-25 01:08:47

Pyth,20字节

代码语言:javascript
复制
._s*V-Rxz\^Uzm.xsd0z

测试套件

-1代表左偏,0代表平衡,1代表右偏.

它的工作原理:

代码语言:javascript
复制
._s*V-Rxz\^Uzm.xsd0z
                        z = input()
                        Weights:
             m     z    Map over z
              .x        try:
                sd           cast charater to int
                  0     except: 0
                        Lever arm:
           Uz           range(len(input()))
     -Rxz\^             Subtract index of caret from each value.
   *V                   Vectorized multiplication.
  s                     Sum.
._                      Take sign and print.
票数 4
EN

Code Golf用户

发布于 2015-11-24 23:33:57

JavaScript,146个字节

代码语言:javascript
复制
s=>{a=[0,0];d=s.split`^`;for(j=0;j<2;j++)for(i=0;i<d[j].length;i++)a[j]+=d[j][i]*(j==0?d[j].length-i:i+1);alert(a[0]==a[1]?'B':a[0]>a[1]?'L':'R')}

相当大。

演示

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

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

复制
相关文章

相似问题

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