回报率1-人气竞赛[关闭]


28

任务

创建一个返回1的函数/子例程。只要返回1,就可以根据需要进行详细说明。

规则

投票最多的作品将获胜-就像任何知名度竞赛一样。祝好运!


6
+1四个下注,但有13个答案?
jsedano

13个答案,但其中只有两个获得了任何选票。也许这是我们的emacs vs vi问题版本–一个问题,每个人都有答案,但是没有一个问题比另一个问题特别出色。
面包箱

5
@anakata,因为四个(现在变成六个)人认为这是他们认为最好不要发布的问题。有些人在原则上反对人气竞赛,而这是该类别的最底层。
彼得·泰勒

1
这是codegolf不容易适应stackexchange格式的地方之一。比较一下Collat​​z猜想,它现在也正在流行。答案都很平凡(没有冒犯),因为这对创意高尔夫不是一个好问题-天真的方法也是最短的方法。而在这个问题上,人气竞赛可以为非常琐碎的任务提供各种有趣的答案。阅读起来要有趣得多,但是stackexchange应该避免这样的开放式内容。因此,反对票。
面包箱

@breadbox要点-从现在开始,我将使我的挑战变得更加有趣 :)
Doorknob

Answers:


37

高尔夫脚本

1

花了很长时间将这段代码优化到最纯粹的程度,我敢说它-漂亮的形式。没有多年的实践,这种语言的优雅就不会出现。没有“零指令集计算机”的程序,从字面上就无法进一步压缩。我的整个职业高尔夫生涯一直引领着这一刻。

我自由了。我还活着。

我看到了构成基础的代码。


3
您可以编写仅使用单个位的程序吗?
凯文-恢复莫妮卡

@Kevin仅在Minecraft中(我以前做过-制作了3x5 px的屏幕以及所有内容)。
Timtech

1
without a Zero-Instruction-Set-Computer can literally never be compressed any further。我们当前的计算机可以轻松处理0条指令程序。您所需要的语言必须是:规范中的“空程序返回1”
Cruncher 2014年

36

C

以下两个示例使用了模糊的语言功能,例如“强收益”(return!)和“方法”运算符(-->):

int foo(void) {
    return! 0;
}
int bar(void) {
    int i=7;
    while (i --> 0);
    return-i;
}

12
和特殊return-i关键字:P
门把手

4
对于那些谁想要了解更多关于“ - >”看到这个 stackoverflow.com/questions/1642028/...
SAURABH拉纳

34

脑干

+++++++
+++++++
    +++
    +++
    +++
    +++
    +++
++++++++++
++++++++++.

或者,如果您在聚会上不开心:

+++++++[->+++++++<]>.

2
看起来更像是小写字母而l不是1
乔Z.

26

杀伤人员地雷

one ← {⍴⍴⍴⍵}

为您提供矢量的尺寸。那尺寸始终是一维的,这样的尺寸总是一个。要么:

“ X的Rho,rho,rho
始终等于1,
Rho是维度; rho rho,等级
APL很有趣!”

(我没有写那节经文,是斯托曼的。)


2
我已经学会了现代少将宋,从门户网站的巨蟒和仍然活着唱的歌曲的钱......这仍是nerdiest歌已经永远一直停留在我的头上。很好找到marinus!好诗人斯托曼!
lochok

J中的相同内容:(# @: # @: #空格是可选的)
–ɐɔıʇǝɥʇuʎ's

21

爪哇

public static int funWithOne() {
    try {
        try {
            return funWithOne();
        } finally {
            return funWithOne();
        }
    } catch (Throwable _) {
        return 1;
    }
}

最终返回之前,它会自称为2 1024次(此数字在不同平台上可能会有所不同)1。但是不要屏住呼吸;否则很容易花费很多时间比宇宙的年龄。


3
“这将自称为2 ^ 1024次”为什么?我认为这是一个堆栈问题。试着给自己打电话,直到耗尽堆栈,然后再做一次,一次?

@LegoStormtroopr这里有一些尝试最后的东西可以使堆栈保持较低,但是仍然有很多调用
Cruncher 2013年

2
@LegoStormtroopr看到这个
arshajii 2013年

20

x沿随机方向发送程序计数器。#是程序计数器“反弹”的墙。这实际上会漫无目的地游荡,直到找到“ ^”,然后打印1并完成。

xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx###xxxxxxxxxxxxxx
xxxxxxxxxx#;#xxxxxxxxxxxxxx
xxxxxxxxxx#n#xxxxxxxxxxxxxx
xxxxxxxxxx#1#xxxxxxxxxxxxxx
xxxxxxxxxx#^#xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx

+1既使翻译感到累,又让其他> <>小便穿上裤子。大声笑。
tomsmeding

很容易将其轻松转换为Befunge 98;这很好。简单地改变每x到一个?,每#到一个rn进入.;进入@。但是,此> <>程序看起来比等效的Befunge好。翻译显示在这里:ideone.com/ZyuSKk
Justin

也许我太喜欢这个了;这是另一个Befunge,但这需要大约400万次操作才能完成。我想可以通过将每个更改?为a x和将每个更改#为a !(当也保持相同时也可以正常工作)和(当然).to n@to 可以将其直接转换为> <> ;ideone.com/gfApjT
贾斯汀

@Quincunx似乎需要大约2 ^ 10次尝试,每次尝试的预期操作次数约为10次。这使我大约进行了2000次操作。我想念什么吗?
Cruncher 2014年

@Quincunx没关系,它是4 ^ 10。得到它了。大声笑。仅供参考,我非常确定可以将代码最小化,并且仍然可以执行相同的操作。
Cruncher 2014年

19

Unix Shell(Bourne,POSIX,bash,ksh,csh等)

expr 0

这将输出 0,但返回 1,这对于习惯于其他语言的程序员可能会感到惊讶。您可以通过运行关闭打印输出并查看返回码expr 0 >/dev/null; echo $?


1
我以前对此一直很感动。您想知道是否存在进程吗? $(pidof progname) < 1
拉玛先生先生2013年

18

爪哇

这是我最喜欢的Java特定问题之一。

public static int ret1() {
    try {
        return 0;
    } finally {
        return 1;
    }
}

我不明白...
帽子的家伙

5
试图返回一个try块会立即触发finally,并在其他return语句运行之前返回1 。
PsHegger 2014年

啊好吧。谢谢!
戴帽子的家伙

在finally块中返回应该引发编译错误。我想不出任何合法的用例。
Cruncher 2014年

在C#中,它确实会引发编译错误,但在Java中,这是可能的。当然,这并不意味着它有用,我也无法想到任何合法的用例
PsHegger 2014年

16

的JavaScript

function getOne() {
    return -~![];
}

说明:

  • 首先![]评估为false
  • 然后~false成为,-1因为false首先被投射到0~0 == -1
  • 最后,--1评估为1

备用:

return +!([][~~{}])

疯狂备用(每行正好是80个字符长):

this[693741..toString(36)]('acnuftiao nobcbdaterbaurn +abeba!!be'.replace(/b./g,
function(b){return '{}()'.split('')['aecd'.split('').indexOf(b.charAt(1))]})[''+
'replace'](new RegExp('a'+Array(5).join('(.)'),'g'),(a='$')+'4321'.split([]+[]).
join(a)))

1
-〜{} + []是另一种方法。{} + []的值为
0。– tristin

16

的JavaScript

// we all know that OOP == good
function OneManager() {
    // constants == good too
    this.values = {
        ERROR: -1, // value on error
        ONE: 1 // desired value
    }
    this.value = this.values.ERROR // set the value to ERROR
    this.setValue = function(num) {
        if (typeof num !== "number") throw new Error('cannot set value to non-number')
        if (!this.value) this.value = this.values.ERROR // oh noes
        else this.value = num
    }
}
// initialize the one
OneManager.prototype.initializeOne = function() {
    this.setValue(this.values.ONE) // set the value to ONE
    return true // return true for success
}
// get the value
OneManager.prototype.getValue = function() {
    if (this.value == this.values.ERROR) { // if the value is ERROR
        throw new Error('value not initialized')
    } else return this.value // return the value
}

function getOne() {
    var m = new OneManager() // make a OneManager
    var success = m.initializeOne() // initialize the value
    if (success) return m.getValue() // return the value
    else  {
        // there was an error in the initialization
        var retVal = m.values.ERROR // we will return an error
        delete m // maybe it's corrupted
        return retVal // return an error
    }
}

alert(getOne())

4
那是您在此处获得的功能强大的一段代码。
mveroone 2014年

@Kwaio我在阅读您的评论时迷失了
Newbrict

OO == good还是OO === good
JoshWillik 2014年

3
@JoshWillik:是的。;-)
门把手

12

Haskell和ADT教堂

data One = One deriving (Eq, Ord, Bounded, Enum, Show, Read)

这定义了一个 true One。这One既是表示Oneness的类型,又是构造函数One,它本身是返回一个 true 的无效函数,并且仅返回type的一个值One,即,One

用法 ghci REPL中的:

λ: One                  -- One returns the one true One
One
λ: One == One           -- One is equal to itself, as no others are 
True
λ: One < One            -- One is no less than itself
False
λ: minBound :: One      -- One is the least One there is, yet it is all you need
One
λ: maxBound :: One      -- One is as big as the universe of One, it is omnipotent
One
λ: [ One .. One ]       -- One is the beginning, and ending, of all that is One
[One]
λ: show One             -- The textual gospel of One
"One"
λ: read "One" :: One    -- To read the word of One, is to become one with One
One

完整的《一本书》现已上线。加载它会得到两个证明:计算和算术。这使您能够探索更多的真相:

λ: One + One            -- One can only add to its magnificence
One
λ: negate One
*** Exception: One cannot be negated, mortal fool!

λ: One `div` One        -- One is indivisible
One
λ: One `mod` One
*** Exception: Nothing can modulate the power of One

λ: toRational One       -- Ye shall know One as both Numerator and Denominator
1 % 1
λ: toInteger One * 42   -- One multiplies all to wholeness
42
λ: toRational One / 2   -- Even divided, One is on top
1 % 2

9

Groovy

-"""
int getRandomNumber()
{
    return 4;   //chosen by fair dice roll.
                //guaranteed to be random.
}
""".indexOf(4)

不包含4


我想我已经在xkcd上看到了。
mveroone 2014年

1
是的,那是个主意:)
Fels

8

佩尔

sub ret1 { print $->$= }

(尽管出现,该函数不会打印任何内容。)

我知道Perl程序员喜欢说TMTOWTDI,但这确实是 MTOWTDI 的任务。


8

的PHP

<?php
function getOne() {
  return 0 + "one" == 0;
}

编辑:

如果您希望使用更长的打印机,可以使用以下方法(它不会打印任何内容):

<?php
function getOne() {
    return print('the' + 'integer' + 'between' + 0 and 2);
}

8

C

float one(void)
{
    const int n = 24; // magic number
    float x = 0.5f;
    float y = x;
    int i;

    for (i = 0; i < n; ++i)
    {
        x *= 0.5f;
        y += x;
    }
    return y;
}

您是怎么想到的?
索拉布·拉娜

4
这是几何级数1/2 + 1/4 1/8 + ... + = 1
卡西楚

2
并循环24次,因为float具有24位精度
phuclv 2014年

7

修辞的Java

您没有说它必须是整数1。

float one_F(){
    return FloatFactoryFactory.getInstance(FloatFactoryFactory.
    defaultInstanceDescriptionString).getFactory(Locale.getLocale
    ("en-US")).createBuilder().setString("1.0").getResult();
}

资料来源:http//bash.org/?946461


7

JavaScript(实际上是ECMAScript)

function one() { return Number.length; }

时间一些规范色情。

15.7.3节声明构造函数的length属性Number1(并且我们知道构造函数是4.3.4中提到的函数对象),这是因为15.3.5.1节说:

length属性的值是一个整数,表示该函数期望的“典型”参数数目。但是,该语言允许使用其他一些参数来调用该函数。

…并且由于Number构造函数的典型参数个数为1,因此lengthof Number1。因此,可以说Javascript中数字的长度为1。


6

佩尔

sub one{ $a[@a{@a[%a=map{@$a[@a{$a++=>$a}]+++$#$a+$a=>$a}$a]++}+$a] }

张开说aaaaa

创意概念是内部括号括起来的括号巢牙套......尽可能深入,同时还返回所需的结果,而只能用“一个”变量($a@a%a@$a$#$a当然是完全不同的变量)。

尽管这确实会极大地改变其环境,但它将始终1在后续调用中返回。为了了解它在做什么,您可以考虑运行以下代码:

use Data::Dump qw(dump);
for (1..8) {
  one();
  dump(@a);
  dump(%a);
  dump(@$a);
}

6

Tcl

proc return1 {} {
    catch {(5+2-3)/4}
}

不能像您想象的那样工作。

(5+2-3)/4不是有效的命令,因此会引发错误(return -code 1),catch返回此数字。


6

数学

我认为,使用Mathematica返回1的最优雅的数学方法是:

-Exp[I Pi]

欧拉身份。


5

爪哇

public class print {
    public static char getNum() throws Exception{
        String method = print.class.getSimpleName()+Splitter.class.getDeclaredMethods().length;
        return (char)Splitter.class.getMethod(method).invoke(null);
    }
}
class Splitter{
    public static char print1(){
        return P.getNum();
    }
}
class P{
    public static char getNum(){
        String s = Thread.currentThread().getStackTrace()[P.class.getDeclaredMethods().length].getMethodName();
        return s.charAt(s.length()-P.class.getSimpleName().length());
    }
    public void doNothing(){}
}

可以调整到返回任何其他正数n通过添加方法printXX从1到n到分路器。例如,修改Splitter

class Splitter{
    public static char print1(){
        return P.getNum();
    }
    public static char print2(){
        return P.getNum();
    }
}

将返回“ 2”,而无需任何其他更改。除名称外,添加的方法应与完全相同print1。使用反射获取拆分器中方法的数量,然后使用该名称调用一个函数。P.getNum然后被调用,读取堆栈跟踪并解析出调用方法中的最后一个字符,并显示它。

呼唤 print.getNum()返回字符“ 1”

编辑-修改为不使用String / integer / etc文字。


5

C#

它应取决于硬件体系结构:

return IntPtr.Size / (Environment.Is64BitOperatingSystem ? 8 : 4);

哇!


5

C#

将这个(有争议的)与相邻的(有争议的)Collat​​z猜想合并:

public int CollatzOne()
{
    var current = new BigInteger(new Random().Next(1, Int32.MaxValue));
    var history = new[] { new BigInteger(-1), new BigInteger(-1), new BigInteger(-1) };
    do
    {
        history[0] = history[1];
        history[1] = history[2];
        history[2] = current;
        if (current.IsEven)
            current /= 2;
        else
            current = current * 3 + 1;
    } while (current != history[0]);
    return (int)history.Min();
}

5

红宝石

滥用RNG ...

Random.new(56417).rand(10000)

生成一个介于0和10000之间的“随机”数字,由于我选择了正确的种子,因此恰好是1。

我用来查找数字的脚本:

irb(main):001:0> (1..100000).select{|x|Random.new(x).rand(10000) == 1}
=> [14033, 25845, 35101, 36955, 45334, 56417, 87438, 87460, 99178, 99451]


4

[R

经典:

TRUE + 0

+ 尝试将其参数强制转换为通用类型:此处,由于优先顺序,它强制转换为整数。TRUE对整数的强制转换为1。


+TRUE不行?
格里芬

1
@格里芬 +TRUE碰巧给TRUE
plannapus

另外FALSE + 1,我正确吗?
Timtech

@Timtech是的。
plannapus 2014年

4

图灵机

以B为空白符号的单态图灵机计算1(= 0.111 ...以2为底):

q B 1 R q

(这遵循Turing的惯例,即从空白磁带开始,并在生成的无限序列前加上“ 0”。)



3

蟒蛇

one = lambda zero = 0o11: zero > 1 and all(one(zero-1) for l in '1111111111') and 1 or one and zero or one()

one() 会调用自己111,111,111次,每次返回1,然后返回最终值1。

您也可以指定位数。例如,one(3)将仅返回111次1。

稍后我可能会添加一个解释,但是我现在真的没有时间。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.