Code-Golf:模数除法

20 language-agnostic code-golf

挑战:

如果不使用您的语言提供的模数除法运算符,请编写一个程序,该程序将从用户获取两个整数输入,然后显示第一个数字模数除以第二个数字的结果.假设所有输入都是正数.

例:

    Input of first number:2
    Input of second number:2
    Result:0
Run Code Online (Sandbox Code Playgroud)

谁赢:

如果您不知道Code Golf的工作原理,获胜者是以最少的字符编写此程序的人.

Cas*_*Chu 95

CSS:107个字符:)

CSS(ungolfed):

li {
    counter-increment: a;
}

li:after {
    content: counter(a);
}

li:nth-child(3n) { /* replace 3 with 2nd input ("b" in "a % b") */
    counter-reset: a;
    counter-increment: none;
}
Run Code Online (Sandbox Code Playgroud)

伴随HTML: <ol> <li></li> <li></li> <li></li> <!-- etc. --> </ol>

输出:

输出http://img155.imageshack.us/img155/4643/modd.png

这在IE中不起作用(惊喜!).

  • 现在,这是在盒子模型之外思考! (6认同)
  • 真是太棒了. (3认同)

Dav*_*vid 25

J,10个字符

([-]*<.@%)
Run Code Online (Sandbox Code Playgroud)

用法:

   10 ([-]*<.@%) 3
1
Run Code Online (Sandbox Code Playgroud)

J,17个字符(输入为列表)

({.-{:*[:<.{.%{:)
Run Code Online (Sandbox Code Playgroud)

用法:

  ({.-{:*[:<.{.%{:) 10 3
1

  ({.-{:*[:<.{.%{:) 225 13
4
Run Code Online (Sandbox Code Playgroud)

说明:

我拿了一个图腾柱把它变成笑脸,它起作用了.

  • "我拿了一个图腾柱把它变成笑脸,它起作用了." 黄金先生,黄金. (6认同)
  • golfscript ftw! (2认同)

Cla*_*diu 25

Golfscript,6 7 13个字符:

2*~/*-
Run Code Online (Sandbox Code Playgroud)

用法(只输入golfscript的方式):

echo 14 3 | ruby golfscript.rb modulo.gs
2
Run Code Online (Sandbox Code Playgroud)

说明:

2*~     #double the input string and eval (so now 14 3 14 3 are on the stack)
/       #int divide 14 / 3, gives quotient
*-      #multiply that result by 3, subtract from 14, gives remainder
Run Code Online (Sandbox Code Playgroud)

  • @Skizz:是的,但你的语言只能解决模数问题.golfscript已经解决了数十个代码高尔夫挑战,我相信它是Turing-complete,这意味着你可以真正编写任何程序.只是因为在ruby中实现它很简单并不意味着我需要包含实现 - 这就像说你应该为任何C程序包含GCC的源代码. (12认同)
  • @Skizz:嘿,我知道这是半严重的,但这是一个有趣的哲学问题.如果golfscript需要ruby代码,那么我将用Python编写一个C解释器,并要求你的C代码包含我的解释器= P. 我认为关键是语言不是由它的实现定义的(比如`golfscript.rb`或gcc编译器),而是它的规范.另外,你的`m`函数存在,它被称为`%`= P. (3认同)
  • 你肯定应该包含golfscript.rb的内容吗?我的意思是,我可以编写一个.rb文件(称为modulo.rb)来实现模数语言:符号'm'返回stdin上给出的前两个参数的模数,并将结果输出到stdout.因此,我的新语言符合标准,并且在一个角色中完成! (2认同)

Cal*_*ers 13

RePeNt,5个字符

2?/*-
Run Code Online (Sandbox Code Playgroud)

运行使用:

RePeNt mod.rpn 17 3
RePeNt "2?/*-" 17 3
Run Code Online (Sandbox Code Playgroud)

RePeNt是一种基于堆栈的玩具语言,我自己在每个操作符/命令/循环中以反向波兰表示法(RPN)输入.当我整理一下时,我会释放翻译.

Command      Explanation                                              Stack
-------      -----------                                              -----

n/a          The program takes 2 parameters ( 17 3 ) and pushes them  17 3
             onto the stack
2            Pushes a 2 onto the stack                                17 3 2
?            Pops a number (x) off the stack + copies the last x      17 3 17 3
             stack items onto the stack
/            Divides on stack                                         17 3 5
*            Multiplies on stack                                      17 15
-            Subtracts on stack                                       2
Run Code Online (Sandbox Code Playgroud)

  • 它们非常相似,我认为(我从未在GolfScript中编写过任何内容,只阅读规范)因为它们都是基于堆栈的语言 - 你可以说C#和C++是相同的,因为它们都有类型并使用中缀表示法.我的语言和GolfScript有很大的不同,特别是在变量,自定义类型和控制流方面(这里没有使用过).它实际上是J和Golfscript的混合物.解决方案可能会有很大不同,例如:http://stackoverflow.com/questions/232861/fibonacci-code-golf/3029192#3029192和同一页面上的J获胜者. (3认同)

Fat*_*tus 12

Ruby(32):

p(a=gets.to_i)-a/(b=gets.to_i)*b
Run Code Online (Sandbox Code Playgroud)

  • 这不会输出任何结果,你必须在开始时添加"p" (5认同)
  • 是的人,不要低估这一点,他正在提出他的解决方案,以解决代码黄金问题......在这里尊重. (2认同)

Fos*_*sco 8

当然我不会赢,但这里什么都没有:

<?php  
$a=readline("#1:");  
$b=readline("#2:");  
while($b<=$a)$a-=$b;  
echo "Result: $a";  
Run Code Online (Sandbox Code Playgroud)


Mar*_*off 5

我知道已有两个Ruby答案,但为什么不呢?以这种方式获得输入是一种不同的方法来敲掉几个字符.

Ruby 1.8.7 +,29个字符

a,n=*$*.map(&:to_i);p a-a*n/n
Run Code Online (Sandbox Code Playgroud)
$ ruby a.rb 10 3
1