반환 1-인기 콘테스트 [닫기]


28

작업

1을 반환하는 함수 / 서브 루틴을 만듭니다. 1을 반환하는 한 원하는대로 정교하게 만들 수 있습니다.

규칙

가장 인기가 높은 출품작은 모든 인기 대회와 마찬가지로 승리합니다. 행운을 빕니다!


6
다운 피트 4 개 + 답변 13 개를 +1?
jsedano

답변은 13 명이지만 그 중 2 명만이 투표에 참여했습니다. 아마도 이것은 emacs vs vi 질문의 우리의 버전 일 것입니다.
breadbox

5
@anakata, 4 명 (지금 6 명)은 이것이 게시되지 않은 것이 더 좋을 것이라고 생각하는 질문이라고 생각하기 때문입니다. 일부 사람들은 원칙적으로 인기 경연 대회 에 반대 하고 있으며, 이는 해당 범주의 최하위를 긁고 있습니다.
피터 테일러

1
이것은 codegolf가 스택 교환 형식에 적합하지 않은 곳 중 하나입니다. Collatz Conjecture를 비교해보십시오 . 창조적 인 골프를하기에는 좋은 문제가 아니기 때문에 대답은 모두 아주 평범합니다. 이 질문에서 인기 경연 대회는 사소한 작업에 대한 모든 종류의 흥미로운 답변을 허용합니다. 훨씬 더 즐겁게 읽을 수 있지만 stackexchange는 이와 같은 개방형 항목을 피해야합니다. 따라서 downvotes.
breadbox

@breadbox 포인트는 촬영 - 나는 지금부터 나의 도전이 더 재미있는 것:)
손잡이

답변:


37

골프 스크립트

1

이 코드를 가장 순수하게 최적화하는 데 오랜 시간이 걸렸으며 감히 아름답습니다. 이러한 언어의 우아함은 수년간의 헌신적 인 연습 없이는 이루어지지 않습니다. Zero-Instruction-Set-Computer가 없으면 더 이상 압축 할 수없는 프로그램입니다. 내 코드 골프 경력 전체가이 순간에 이르렀습니다.

나는 자유 다. 나는 살아있다.

우주의 기초가되는 코드가 보입니다.


3
단일 비트 만 사용하는 프로그램을 작성할 수 있습니까?
Kevin-Reinstate Monica

@Kevin Only in Minecraft (이전에 해봤습니다-3x5 px 화면과 모든 것을 만들었습니다).
Timtech

1
without a Zero-Instruction-Set-Computer can literally never be compressed any further. 우리의 현재 컴퓨터는 0 개의 명령어 프로그램을 쉽게 처리 할 수 ​​있습니다. 사양에 "빈 프로그램은 1을 반환합니다."
Cruncher

36

기음

"strong return"( return!) 및 "approaches"연산자 ( -->) 와 같이 모호한 언어 기능을 사용하는 두 가지 예 :

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

12
그리고 특별한 return-i키워드 : P
Doorknob

4
'->'더에 배우고 싶은 사람들을 위해이 참조 stackoverflow.com/questions/1642028/...
Saurabh라나

34

Brainfuck

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

또는 파티에서 재미 있지 않은 경우 :

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

2
그것은 소문자 l보다 소문자처럼 보입니다 1.
Joe Z.

26

APL

one ← {⍴⍴⍴⍵}

벡터의 크기를 알려줍니다. 의 차원 그래서 그 치수는 항상 하나의 차원이다 항상 하나입니다. 또는:

"X의 Rho, rho, rho는
항상 1과 같습니다.
Rho는 치수입니다. rho rho, rank
APL은 재미 있습니다!"

(나는 그 구절을 쓰지 않았다, 그것은 Stallman의 것이다.)


2
나는 현대 주요 장군의 노래를 배운 포털에서 몬티 파이썬과 살아하여 돈 노래를 노래 ... 그리고 여전히 한 nerdiest의 노래 한 내 머리에 붙어 있었다. 마리너스를 찾아라! 좋은 구절 스톨 맨!
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의

2
참조 @LegoStormtroopr .
arshajii

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?, 모든를 #r, n.;@. 그러나이> <> 프로그램은 동등한 Befunge보다 낫습니다. 여기에 표시되는 번역 : ideone.com/ZyuSKk
Justin

어쩌면 나는 이것을 너무 좋아한다. 여기 또 다른 Befunge가 있지만이 작업을 완료하려면 약 4 백만 건의 작업이 필요합니다. 나는 직접적으로 번역 될 수 상상> <> 모든 변경하여 ?x모든을 #!(도 같은 떠날 때 잘 작동합니다)와 (물론) .n@;. ideone.com/gfApjT
저스틴

@Quincunx는 시도당 약 10 번의 작업 당 약 2 ^ 10 회의 시도가 필요한 것으로 보입니다. 이것은 약 2000 개의 작업을 제공합니다. 뭔가 빠졌습니까?
Cruncher

@Quincunx Nevermind, 그것은 4 ^ 10입니다. 알았다. lol. 참고로, 코드를 크게 최소화하고 여전히 똑같은 일을 할 수 있다고 확신합니다.
Cruncher

19

유닉스 쉘 (Bourne, POSIX, bash, ksh, csh 등)

expr 0

이것은 0을 출력 하지만 1을 반환 하는데, 이는 다른 언어에 익숙한 프로그래머에게는 놀라운 일이 될 수 있습니다. 를 실행하여 인쇄 된 출력을 끄고 리턴 코드를 볼 수 있습니다 expr 0 >/dev/null; echo $?.


1
나는 전에 이것에 조금 들었다. 프로세스가 존재하는지 알고 싶습니까? $(pidof progname) < 1
Mr. Llama

18

자바

이것은 내가 가장 좋아하는 Java 관련 질문 중 하나입니다.

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

나는 그것을 얻지 못한다 ...
모자를 가진 사람

5
try블록으로 돌아 가려고 finally하면 다른 return명령문이 실행 되기 전에 즉시 1을 리턴 합니다.
PsHegger

아, 알았어요 감사!
모자를

finally 블록으로 돌아 가면 컴파일 오류가 발생합니다. 나는 그것을하기위한 합법적 인 유스 케이스를 생각할 수 없다.
Cruncher

C #에서는 컴파일 오류가 발생하지만 Java에서는 가능합니다. 물론 이것이 유용하다는 의미는 아니며 합법적 인 사용 사례를 생각할 수도 없습니다.
PsHegger

16

자바 스크립트

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

자바 스크립트

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

@Kwaio 나는 당신의 코멘트를 읽고 그것을 잃었다
Newbrict

OO == good또는 OO === good?
JoshWillik

3
@JoshWillik : 예. ;-)
Doorknob

12

하스켈 및 ADT 교회

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

이것은 정의하는 하나의 사실 One. 이것은 OnenessOne 를 나타내는 유형 과 생성자입니다. 생성자 자체는 하나의 true 를 리턴하는 널 (null) 함수 이며 type의 하나의 값 ( behold,) 만 리턴합니다 .OneOneOne

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

하나 의 전체 은 이제 온라인입니다. 그것을로드하면 계산과 산술 두 가지 증거를 얻을 수 있습니다. 이를 통해 더 많은 진실을 탐구 할 수 있습니다.

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

1
그렇습니다, 그것은 아이디어였습니다 :)
Fels

8

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

기음

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 Rana

4
기하학적 시리즈 1/2 + 1/4 + 1/8 + ... = 1입니다.
Casey Chu

2
float는 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

자바 스크립트 (실제로 ECMAScript)

function one() { return Number.length; }

스펙 포르노를위한 시간.

섹션 15.7.3lengthNumber생성자 의 속성 이 1(그리고 우리는 생성자가 4.3.4 에서 언급 된 함수 객체라는 것을 알고 있습니다 ), 그리고 섹션 15.3.5.1 은 다음 과 같이 말하고 있습니다 :

length 속성 값은 함수가 예상하는 "일반적인"인수 수를 나타내는 정수입니다. 그러나 언어는 다른 수의 인수로 함수를 호출 할 수 있습니다.

Number생성자의 일반적인 인수 수는 1이므로 lengthof of Number1입니다. 그래서 자바 스크립트에서 숫자의 길이는 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

내 의견으로는 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(){}
}

1에서 n까지 n의 방법 printXXSplitter 에 추가하여 다른 양수를 반환하도록 조정할 수 있습니다 . 예를 들어, 수정 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

기음#

하드웨어 아키텍처에 따라 달라집니다.

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

와우!


5

기음#

이 (논쟁의) 하나를 이웃 (논쟁의) Collatz 추측 과 병합 :

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]

5

자바 스크립트 8 바이트

이것만으로도 충분합니까?

(+!~~{})

반환 값은 함수에서만 사용할 수 있습니다. 그냥 말하면
Mama Fun Roll

@ ӍѲꝆΛҐӍΛПҒЦꝆ fixed; D
dhazelett

4

아르 자형

고전 :

TRUE + 0

+ 인수를 공통 유형으로 강제하려고합니다. 여기서 우선 순위 때문에 정수로 강제합니다. TRUE정수로 의 강제 변환 은 1을 제공합니다.


겠습니까 +TRUE작동하지?
그리핀

1
@Griffin +TRUE이 제공 TRUE합니다.
plannapus

또한 FALSE + 1, 맞습니까?
Timtech

@Timtech 네 있습니다.
plannapus

4

튜링 머신

B를 공백 기호로 사용하는 단일 상태 튜링 기계는 1을 계산합니다 (기본 2의 경우 0.111 ...).

q B 1 R q

(이는 빈 테이프로 시작하고 생성 된 무한 시퀀스 앞에 '0.'을 접두어 붙이는 Turing의 규칙을 따릅니다.)


4

기음

매개 변수에 대한 설명서도 포함되어 있습니다.

    int
  return_1
(x)     int
       x;{
      /*x
     can
    be:
  any
 val
ue.
***/ return
!x?1:x /x;}

그러나 그것은 2입니다!
Joe Z.

1
그래서? 완전히 문서화되었습니다!
Michael Hampton

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() 최종 값 1을 반환하기 전에 1을 반환 할 때마다 111,111,111 번 호출됩니다.

자릿수를 지정할 수도 있습니다. 예를 들어 one(3)111은 1 만 반환합니다.

나중에 설명을 추가 할 수도 있지만 지금은 시간이 없습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.