リターン1-人気コンテスト[終了]


28

タスク

1を返す関数/サブルーチンを作成します。1を返す限り、好きなように複雑にすることができます。

ルール

人気のあるコンテストのように、最も投票数の多いエントリーが勝ちます。がんばろう!


6
人々がこの質問を楽しんでいるのなら、なぜダウンボートがこれほど多くあるのか?
jsedano

13の答えがありますが、票を獲得したのはそのうち2人だけです。おそらく、これはemacs vs viの質問の私たちのバージョンです-誰もが答えを持っているが、それらのどれも他のものより特に優れているものではありません。
パンボックス

5
@anakata、これは4人(今では6人になっています)の人が、これは投稿しないほうがいいと思う種類の質問だと思うからです。原則として人気コンテストに反対する人もいますが、これはそのカテゴリの底辺を削っています。
ピーターテイラー

1
これは、codegolfがstackexchange形式に簡単に収まらない場所の1つです。今トレンドになっているCollat​​z Conjectureを比較してください。答えはすべて平凡です(攻撃はありません)。これは、創造的なゴルフでは問題にならないためです。素朴なアプローチも最短です。一方、この質問では、人気コンテストでは、非常に簡単なタスクに対するあらゆる種類の興味深い回答が許可されています。読むのがはるかに楽しい—しかし、stackexchangeはこのようなオープンエンドのものを避けることになっています。したがって、downvotes。
パンボックス

@breadboxポイントは、撮影した-私は今から私の挑戦をより面白くするだろう:)
ドアノブ

回答:


37

ゴルフスクリプト

1

このコードを最も純粋に最適化するのに長い時間がかかりました。あえて言うなら、美しい形です。このような言語の優雅さは、長年の熱心な実践なしには得られません。Zero-Instruction-Set-Computerがなければ、文字通りこれ以上圧縮できないプログラム。私のコードゴルフのキャリア全体がこの瞬間につながっています。

私は暇だ。私は生きています。

宇宙の根底にあるコードが見えます。


3
1ビットのみを使用するプログラムを作成できますか?
ケビン-復帰モニカ

@Kevin Minecraftのみ(私は前にやったことがあります-3x5 pxの画面とすべてを作成しました)。
ティムテック14年

1
without a Zero-Instruction-Set-Computer can literally never be compressed any further。現在のコンピューターは、0個の指示プログラムを簡単に処理できます。あなたが持っている言語必要があるすべて:その明細書では「空のリターン1」
たけ

36

C

「強いリターン」(return!)や「アプローチ」演算子(-->)などのあいまいな言語機能を使用した2つの例:

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 /…

34

ブレインファック

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

または、パーティーが面白くない場合:

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

2
これはl1。よりも小文字のように見えます。
ジョーZ.

26

APL

one ← {⍴⍴⍴⍵}

ベクトルの次元を提供します。次元は常に1次元であるので、の次元は常に1です。または:

「Rho、rho、Xのrhoは
常に1に等しく、
Rhoは次元です。rhorho、ランク
APLは楽しいです!」

(私はその詩を書きませんでした、それはストールマンのものです。)


2
私は、モンティ・パイソン・アンド・ポータルからまだ生きてお金の歌を歌わ現代の主要な将軍の歌を、学んだ...そしてそれはまだしていnerdiestの歌です今まで私の頭の中で立ち往生されて。マリナスを見つけてください!良い詩ストールマン!
lochok

Jで同じことが:# @: # @: #(スペースはオプションです)
ɐɔıʇǝɥʇuʎs

21

Java

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

これは、最終的に戻る前に、自身を2 1024回呼び出します(この数値はプラットフォームによって異なる場合があります)1。ただし、息を止めないでください。宇宙の時代よりもはるかに長い時間がかかります。


3
「これは自分自身を2 ^ 1024回呼び出す」なぜですか?スタックの問題だと思います。あなたがスタックを使い果たすまであなた自身に電話してみてください、そしてそれを何度も繰り返してください。

@LegoStormtrooprそこスタックを低く保つこと、いくつかの試みが、最終的にここに詰め込むのですが、それでも通話をたくさん持っている
たけ

2
参照@LegoStormtroopr これを
アルシャジー

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をaに?、すべて#をaにrn.、およびに変更;@ます。ただし、このプログラムは、同等のBefungeよりも見た目が優れています。ここに示す翻訳:ideone.com/ZyuSKk
ジャスティン

たぶん私はこれがあまりにも好きです。もう1つBefungeがありますが、これには400万回の操作が必要です。すべて?をaにx、すべて#をaに変更することで> <>に直接変換できることを想像します!(同じままにすると正常に機能するはずです)および(もちろん).to nおよび@to ;です。ideone.com/gfApjT
ジャスティン

@Quincunxは約2 ^ 10回の試行が必要なように見えます。1回の試行あたりの操作数は約10で、これにより約2000回の操作が可能になります。何か不足していますか?
ランチャー14年

@Quincunx Nevermind、それは4 ^ 10です。とった。笑。参考までに、コードは大幅に最小化でき、それでも同じことを実行できると確信しています。
ランチャー14年

19

Unixシェル(Bourne、POSIX、bash、ksh、csh、…)

expr 0

これ 0を出力しますが、1を返します。これは、他の言語に慣れているプログラマにとっては驚きかもしれません。を実行すると、印刷出力をオフにし、リターンコードを表示できますexpr 0 >/dev/null; echo $?


1
私は以前にこれに噛まれたことがあります。プロセスが存在するかどうか知りたいですか? $(pidof progname) < 1
ラマ氏

18

Java

これは、私のお気に入りのJava固有の質問の1つです。

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

私は...それを得ることはありません
帽子の男

5
他のステートメントを実行する前に1を返すtryブロックで即座に戻ろうとすると起動finallyしますreturn
PsHegger

あ、そう。ありがとう!
帽子の男

finallyブロックで返されると、コンパイルエラーがスローされます。それを行うための正当なユースケースは考えられません。
ランチャー14

C#ではコンパイルエラーがスローされますが、Javaでは可能です。もちろん、それはそれは便利だ意味しません、どちらも私は正当なユースケースと考えることができます
PsHegger

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
これは、ここで手に入れた堅牢なコードの1つです。
mveroone 14年

@Kwaioあなたのコメントを読んで失った
Newbrict

OO == goodまたはOO === good
JoshWillik 14年

3
@JoshWillik:はい。;-)
ドアノブ

12

ハスケル&ADT教会

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

これは、定義1One。これがOne示すタイプの両方であるワンネスを、コンストラクタOne引数なし返す関数自体は、1真、およびタイプの唯一の値One、見よ、ありますOne

ghciREPLでの使用:

λ: 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

完全なBook of 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

グルーヴィー

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

4を含まない


私はこれをxkcdで見たと思います。
mveroone 14年

1
はい、それはアイデアでした:)
Fels 14年

8

Perl

sub ret1 { print $->$= }

(外観にもかかわらず、この関数は何も印刷しません。)

PerlプログラマーはTMTOWTDIを言うのが好きですが、これはTが本当に 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;
}

どうやってこれを思いついたの?
Saurabhラナ

4
これは、幾何学的なシリーズ1/2 + 1/4 + 1/8 + ... = 1です
ケーシーチュー

2
フロートは、精度24ビット持っているので、それは24回ループ
phuclv

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のプロパティNumberコンストラクタがある1(と私たちはで述べたように、コンストラクタは関数オブジェクトであることを知っている4.3.4)、及びその者のセクションので、15.3.5.1は言います:

lengthプロパティの値は、関数が期待する引数の「典型的な」数を示す整数です。ただし、この言語では、他のいくつかの引数を使用して関数を呼び出すことができます。

…そしてNumberコンストラクタの引数の典型的な数は1なので、lengthof Number1です。したがって、Javascriptの数値の長さは1であると言えます。


6

Perl

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

大きく開いて言うaaaaa

創造的なコンセプトは、まだ望ましい結果を返す、とだけ「1」の変数を使用している間(、深くできるだけ...括弧内の括弧内の巣の中括弧にした$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

Java

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(){}
}

Splitterに1〜nのnメソッドprintXを追加することにより、他の正の数を返すように調整できますX。例えば、修正Splitter

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

他の変更は必要なく、「2」を返します。追加するメソッドは、名前とは別に、の完全な複製である必要がありprint1ます。リフレクションを使用してスプリッター内のメソッドの数を取得し、その名前で関数を呼び出します。P.getNum次に呼び出され、スタックトレースを読み取り、呼び出し元メソッドの最後の文字を解析して表示します。

呼び出し中 print.getNum()は、文字「1」を返します

編集-文字列/整数/などのリテラルを使用しないように変更。


5

C#

ハードウェアアーキテクチャに依存する必要があります。

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

うわー!


5

C#

この(物議を醸す)1つを隣接する(物議を醸す)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

チューリングマシン

空白記号としてBを使用する単一状態のチューリングマシンは、1(= 2で0.111 ...)を計算します。

q B 1 R q

(これは、空のテープから開始し、生成された無限シーケンスの前に「0.」を付けるというチューリングの規則に従います。)



3

Python

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) 1を111回だけ返します。

後で説明を追加するかもしれませんが、現時点では時間がありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.