n 번째 3 차


17

나는 n 번째 삼항을 n을 반환하고 다음 형식을 갖는 삼항으로 정의합니다.

1 ? 2 ? 3 ? n - 1 ? n : 0 : 0 : 0  # n - 1 zeroes

입력이 주어진 함수 또는 완전한 프로그램을 작성하면 n 번째 삼항을 출력하거나 반환합니다. 코드 골프.

테스트 케이스

0 #=> undefined behaviour
1 #=> 1
2 #=> 1 ? 2 : 0
3 #=> 1 ? 2 ? 3 : 0 : 0
10 #=> 1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 10 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0

1000 번째 삼항 은 어떤 선 하모니가 있다고 생각합니다.


1
후행 공백이 허용됩니까?
rink.attendant.6

@rink 아니, 훈련 공간이 없습니다
Caridorc

1
"삼항"은 3을 의미하기 때문에 수학에서 "n-ary"로 명명해서는 안됩니까?
mbomb007

4
주석을 "편집"하는 방법은 주석을 삭제하고 새 주석을 추가하는 것입니다.
Reto Koradi

1
@RetoKoradi 댓글을 게시 한 후 5 분 이내에 댓글을 편집 할 수 있습니다.
mbomb007

답변:


8

Pyth- 19 18 17 바이트

그 공간을 다루는 더 좋은 방법을 생각하면서 나를 죽이고 있습니다.

+j" ? "SQ*tQ" : 0

숫자를 a로 조인 " ? "한 다음 두 번째 부분을 연결합니다.

+              String concatenation
 j" ? "        Join by the string
  SQ           1-indexed inclusive range to input
 *             String repetition
  tQ           Input - 1
  " : 0        String implicitly closed by end of program

여기에서 온라인으로 사용해보십시오 .


10

CJam, 18 18 바이트

ri,:)":?0"*2/ze_S*

온라인으로 사용해보십시오 .

설명

ri,:)          e# Generate the list 1..n.
":?0"*         e# Insert ":?0" between every two numbers.
2/             e# Split into pairs, e.g. 1:, ?0, 2:, ?0, ..., ?0, n.
z              e# First items in every pair before second items in every pair.
e_             e# Concatenate the two parts.
S*             e# Insert spaces.

12
나는 사랑합니다 :).
Alex A.

9

루비, 31 바이트

f=->n{[*1..n]*' ? '+' : 0'*~-n}

테스트:

> f[1]
=> "1"
> f[7]
=> "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 : 0 : 0 : 0 : 0 : 0 : 0"

2
그래서 array * string== array.join string... 흥미있는
Caridorc

정말 멋지다. 호기심에서 당신이 할 때 어떻게됩니까 f[0]?
Alex A.

1
@AlexA. irb(main):007:0> f[0] ArgumentError: negative argument from (irb):6:in * from (irb):6:in block in irb_binding from (irb):7:in [] from (irb):7 from /usr/bin/irb:11:in <main>
Caridorc

4
@Caridorc 시끄럽고 이해할 수 없습니다. 좋은.
Alex A.

2
@daniero 경고 : 안티 문자열이 생성 될 수 있습니다
Caridorc

8

CJam, 19 바이트

시작에 불과합니다 ...

ri_,:)'?*\(":0"*+S*

작동 원리

ri_                       e# Read the number as integer and make a copy of it on stack
   ,:)                    e# Convert the copy to array [1 .. n]
      '?*                 e# Join the numbers with a '?'. So we have [1 '? 2 '? ... '? n]
         \(               e# Swap the stack to get original integer on top. Decrement it by 1
           ":0"*          e# Get n-1 repeated ":0" string
                +S*       e# Join the two strings and fill it with spaces. 

여기에서 온라인으로 사용해보십시오


도대체 1 분 너무 늦었 어
Dennis

3
와우 당신은 Cjam에서 코딩에 꽤 빠릅니다 : O
Caridorc

@Dennis Optimizer의 첫 번째 솔루션과 동일한 초기 솔루션이 실제로 첫 번째 솔루션이라고 생각합니다. 적어도 나는 그것이 먼저 팝업되는 것을 확신합니다. 그러나 유예 기간 내에 편집하면 게시 시간이 업데이트되었습니다.
Reto Koradi

1
@RetoKoradi 그의 게시물 ID는 52870입니다. 광산은 52869입니다 :)
Optimizer

아,이 사이트에서 삭제 된 게시물을 볼 수있는 권한이 없습니다. 둘 다 동시에 나를 위해 팝업되었을 것입니다, 그리고 나는 최고 하나를 발견했습니다. 나는 유예 기간 내에 편집 할 때 SE가 시간을 게시하기 위해 펑키 한 일을 할 수 있다는 것을 기억합니다. 그렇지 않으면 빈 자리 표시자를 게시하고 유예 기간 내에 내용을 채워 첫 번째 답변을받은 것처럼 보이게 할 수 있으며 유예 기간 내의 편집 내용이 추적되지 않기 때문에 처음부터 유용한 내용이 포함되어 있습니다.
Reto Koradi

6

브레인 포트, 305

(STDIN의 입력 번호가 없으면 하단의 편집 참조)

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

나는 이것을 사용 했다 멋진 알고리즘을 하여 전체 프로그램의 155 바이트를 차지하는 숫자를 인쇄했습니다.

최대 32768 개의 입력 (알고리즘의 16 비트 제한)에 적용됩니다. 후행 공백을 생성하지 않으며 입력 1에도 작동 합니다.

input    output
0        [infinite loop (til underflow)]
1        "1"
2        "1 ? 2 : 0"
4        "1 ? 2 ? 3 ? 4 : 0 : 0 : 0"
etc.

빠른 연습 :

설정 (97 바이트)

-                                 Decrease input (position 0)
[->+>+<<]  >>>                    Copy input twice to the right and 
                                      shift 3 positions to the right
++++[>++++++++<-]>   [<+>-]       Precalculate number 32 (=" ") at position 3
+++++++[>+++++++++<-]>  [<+>-]    Precalculate number 63 (="?") at position 4
++++++[>++++++++<-]>    [<+>-]    Precalculate number 48 (="0") at position 5
++<<<<                            Precalculate number 2 for later use. This number
                                      will be printed in each iteration. (position 6)

첫 번째 부분 (181 바이트)

>>>+.-<<<                Go to the char "0" we saved, increase it, print it,
                             decrease it and go back (this prints "1" everytime)
[                        While our second copy of the number isn't zero
    >.>.<.>>>                Move to " ", print, move to "?", print,
                                 move to " " again, print, move to our
                                 number at the end which is initially 2

    [>>+>+<<<-]>>>[<<<+>>>-]<<+>[<->[>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]
        ++++++++[<++++++>-]>[<<+>>-]>[<<+>>-]<<]>]<[->>++++++++[<++++++>-]]<
        [.[-]<]<             Algorithm to print the number at current position

    +<<<<                    Increase our number at the end and return to the beginning
-]                       Decrease the loop variable

두 번째 부분 (27 바이트)

>>-----<<<        Move to our "?" char and decrease it by 5 to get ":"
[-                While our first copy of the number isn't zero decrease it
   >>.>.<.>>.<<<<     Print " ", print ":", print " ", print "0"
]

8 개의 Brainfuck 명령을 3 비트로 맵핑 할 수 있으면이 프로그램은 114를 차지합니다. 바이트와 ​​3 비트를

단항, ~ 4.08 * 10 ^ 275 바이트

여기에는 너무 오래 걸리지 만 4084522578625602393299486062952863611126032086501306085250400447003793314577596676469855866584696018038896282464107885724924379287148671902707089354277989837147977861232927507437712250961455752103200838383858385와 동일합니다.

편집하다 : 엉망이 프로그램은 실제로 사용자 입력을받지 않고 단지 현재 포인터 값을 입력으로 사용합니다. 숫자를 구문 분석 할 수 있으려면 훨씬 더 많은 것이 필요하며 그렇게하기 위해 귀찮게 할 수 없습니다.

따라서 프로그램에 직접 입력 한 값 (프로그램 앞에 n 번 "+"를 추가하여)으로 작동하지만 STDIN에서는 작동하지 않습니다.


5

자바 스크립트 (ES6), 42 39 바이트

f=m=>(g=k=>k-m?k+` ? ${g(k+1)} : 0`:m)(1)

외부 함수 f는 입력 값을 가져 와서 내부 함수를 호출합니다.g 재귀 적으로 하여 입력 값을 최대로 사용하여 기본 사례를 테스트하여 중간에서 문자열을 작성합니다.

언 골프 드 :

function f(max) {
    function g(count) {
        if(count==max) {
            // base case: return max for the center
            return max;
        } else {
            // recursive case: build outer shell around center
            return count + " ? " + g(count+1) + " : 0";
        }
    }

    return g(1);
}

4

파이썬 56 55

t=lambda n:' ? '.join(map(str,range(1,n+1)))+' : 0'*~-n

4

C #-76

Func<int,string>F=k=>{var r="";for(;k>1;)r=" ? "+k--+r+" : 0";return"1"+r;};

3

하스켈, 53 바이트

g n='1':foldr(\x s->" ? "++show x++s++" : 0")""[2..n]

작동 방식 : 빈 문자열로 시작 하여 현재 번호 앞에 a 를 추가 하고을 추가하여 n아래로 반복하여 문자열을 내부에서 작성 하십시오 . 마지막으로 모든 것을 앞에 두십시오 .2?: 01

다른 접근법 (@Mauris 덕분에 이제 9 바이트 더 짧음) :

하스켈, 60 51 바이트

 f n='1':((=<<[2..n])=<<[(" ? "++).show,\x->" : 0"])

작동 방법 : 문자는 1다음 ? <x>각각 <x>[2..n]일정한 다음 : 0<x>에서 [2..n].


60 바이트를 기반으로 51까지 내려 오는 접근 방식 :g n='1':((=<<[2..n])=<<[(" ? "++).show,\x->" : 0"])
Lynn

사실, 당신은 대체하여보다 직접적으로 (51)에 내려받을 수 (\_->" : 0")=<<[2..n][2..n]>>" : 0"
Lynn


3

줄리아, 44 31 바이트

n->join(1:n," ? ")*" : 0"^(n-1)

이것은 정수를 입력으로 받아들이고 문자열을 반환하는 명명되지 않은 함수를 만듭니다. 호출하려면 이름을 지정하십시오 (예 :) f=n->....

먼저 정수 1 ~ n을 결합하여 ?공백과 공백을 단일 문자열로 분리 합니다. 그런 다음 " : 0"반복 되는 문자열을 추가합니다. n -1 .

예 :

julia> f(1)
"1"

julia> f(3)
"1 ? 2 ? 3 : 0 : 0"

julia> f(0)
can't repeat a string -1 times

2

자바 스크립트 ES7, 62 바이트

n=>[for(i of Array(n).keys())i+1].join` ? `+' : 0'.repeat(n-1)

골프를 더 할 수 있을지 모르겠습니다. 그러나 그것은 매우 간단한 해결책입니다.

Firefox 만 해당 :

var f=n=>[for(i of Array(n).keys())i+1].join` ? `+' : 0'.repeat(n-1)

alert(f(+prompt('Input: ')));

ES5 상당 :

// Most browsers now support .repeat
String.prototype.repeat = String.prototype.repeat || function(n){var _n = '', i = 0; for (;i < n; i += 1){_n+=this};return _n}
                                                             //Function                         
function f(n){a=[];for(i of Array(n).keys()){a.push(i+1)};return a.join(' ? ')+' : 0'.repeat(n-1)}

alert(f(+prompt('Input: ')))


2

CoffeeScript, 52 바이트

f=(n)->s='';s=' ? '+n--+s+' : 0'while n;s.slice 3,-4

설명

f=(n)->
 s = ''                                # initialize string
 s = ' ? ' + n-- + s + ' : 0' while n  # prepend and append in decrementing loop
 s.slice 3,-4                          # chop off leading ?, trailing 0 and whitespace

2

SWI- 프롤로그, 90 바이트

a(X):-Y is X-1,\+ (between(1,Y,L),\+writef('%w ? ',[L])),write(X),writef('%r',[' : 0',Y]).

확실히 이길 수는 없지만, \+ (between(1,TopBound,N),\+do_something(N))일련의 정수로 무언가를 반복하는 것이 흥미 롭습니다.


2

스위프트 145 (공백없이 135)

func t(n:Int) -> String {
    let a = (1..<n).reverse().reduce("") {" ? \($1)\($0) : 0"}
    return a.substringFromIndex(advance(a.startIndex, 3))
}

부분 문자열의 부분이 실제로 표현식을 생성하는 부분보다 길다는 것을 믿을 수 있습니까?


1
꼭 사랑 스위프트는 <3 정말 그들이 그것을 만드는 것이 당신이 정수와 같은 인덱스에 문자열을 액세스 할 수 있지만 바랍니다 str[1]str[0...5]. 물론 작은 확장도 가능하지만 표준 라이브러리에서이 기능을 활성화하길 바랍니다
Kametrixom

@Kametrixom apple은 한 번 베타 베타에서 이것을 허용했지만 다양한 유니 코드 인코딩으로 그렇게 할 수 없습니다. 주로 일부 심볼이 2 바이트 이상이고 일부는 그렇지 않기 때문입니다. 따라서 동일한 색인을 사용하는 다른 인코딩에서 동일한 문자를 가져 오는 것은 보장되지 않습니다. 내 설명이 정확하지 않을 수도 있지만, 이것이 기본적으로 애플이 못생긴 문자열 인덱스 구문을 도입 한 이유입니다.
Ben Lu

최근 코드 골프에 스위프트를 사용하는 데
익숙해졌고

2

펄, 36 바이트

say join(" ? ",1..$_)." : 0"x($_-1)

35문자 +1에 대한 -n.

로 실행 :

echo 10 | perl -nE'say join(" ? ",1..$_)." : 0"x($_-1)'

2

자바, 71

RCB의 답변 에 대해 의견을 말한 후에 나 자신을 도울 수 없었습니다 . 여기 또 다른 Java가 있습니다 (Java가 가장 길지 않은 와우와 같은 71)!

String t(int n){String s=""+n;for(;--n>0;)s=n+" ? "+s+" : 0";return s;}

2

자바, 125 88 바이트

기발한

String f(int n){if(n==1)return"1";String s="",e="";for(int i=1;i<n;i++){s+=i+" ? ";e+=i==n-1?": 0":": 0 ";}return s+n+" "+e;}

더 좋은 형식과 변수 이름으로 :

String nAry(int n) {
    if (n == 1) {
        return "1";
    }
    String start = "", end = "";
    for (int i = 1; i < n; i++) {
        start += i + " ? ";
        end += (i == n - 1) ? ": 0" : ": 0 ";
    }
    return start + n + " " + end;
}

개선- 아래 Jack Ammo의 의견 덕분에

String f(int n){String s="",e=s;for(int i=1;i<n;){s+=i+++" ? ";e+=" : 0";}return s+n+e;}

1
공간을 설명하기 위해 e에 덧붙이 기 위해 3 자 연산자가 필요하지 않습니다. 항상 콜론 앞에 공간이 필요하다고 가정하십시오 e+=" : 0";. 그런 다음 forloop 줄 대신 i를 사용하여 후 증가시켜 1 바이트를 저장할 수 있습니다. for(int i=1;i<n;){s+=i+++" ? ";return 문은 더 이상 n 뒤에 추가 된 공간이 필요하지 않습니다 return s+n+e;. 를 사용하여 1 바이트를 저장할 수도 있습니다 e=s. 또한 for 루프 논리가 결과를 보장하므로 처음에 if 문이 필요하지 않습니다.
잭 Ammo

@JackAmmo 훌륭한 팁, 감사합니다! if 문은 공백을 피하기 위해 필요했지만 for 루프 로직을 개선 한 후에는 더 이상 없습니다. 변경 사항을 통합했으며 귀하의 답변을 찬성했습니다.
RCB

1

자바 스크립트 (ES6), 59 바이트

템플릿 문자열 도움말을 사용하는 CoffeeScript 답변과 동일한 접근 방식입니다. String.prototype.repeat너무 많은 문자가 필요합니다.

f=n=>{for(s=``;n;)s=` ? ${n--+s} : 0`;return s.slice(3,-4)}

데모

ES6이므로 현재로서는 Firefox 만 있습니다.

f=n=>{for(s=``;n;)s=` ? ${n--+s} : 0`;return s.slice(3,-4)}

// DEMO
console.log = x => document.body.innerHTML += '<p>' + x

console.log(f(1));
console.log(f(3));
console.log(f(10));



1

파이썬 2, 63 60 58 56

여기 사용해보십시오

쉬운 해결책 : (63)

n=input()
for i in range(n-1):print-~i,'?',
print`n`+' : 0'*~-n

편집 : 정말 재귀 함수를 시도하고 싶었습니다. 여기 있습니다 : (56)

f=lambda n,c=1:`c`+(' ? '+f(n,c+1)if c<n else~-n*' : 0')

편집 : 왜 이것이 작동하지 않는지 아는 사람이 있습니까? 인덱스가있는 목록을 시도했지만 c<n스택 오버플로 오류로 인해 작동하지 않았습니다. 이것과 동일 :

f=lambda n,c=1:`c`+((c<n)*(' ? '+f(n,c+1))or~-n*' : 0')

평가 된 함수를 포함하는 목록을 작성해야하기 때문에 인덱스가 작동하지 않습니다 (명확하게 영원히 실행될 것임). 곱셈에서도 똑같은 일이 발생하지만 함수를 수행하더라도 함수를 평가해야 0*합니다.
FryAmTheEggman

@FryAmTheEggman 좋아요, 감사합니다. 나는 이런 상황이 전에 일어난 적이 없다.
mbomb007

1

rs , 77 바이트

(\d+)/(_)^^(\1)
+^_(_+)/\1 _\1
_(_+)$/_\1( : 0)^^((^^\1))
(__+)/? (^^\1)
^./1

라이브 데모 및 테스트 사례.

설명:

(\d+)/(_)^^(\1)

숫자를 일련의 N 밑줄로 확장하십시오.

+^_(_+)/\1 _\1

공백으로 구분하여 다양한 밑줄을 반복해서 만듭니다. 예를 들어이 될지는 ___으로 _ __ ___.

_(_+)$/_\1( : 0)^^((^^\1))

의 밑줄 (길이 N) N-1 인스턴스의 마지막 세트에 추가합니다 : 0.

(__+)/? (^^\1)

각 밑줄 그룹의 길이를 앞에 ?두고 첫 번째에 대한 EXCEPT를 붙입니다.

^./1

첫 번째 숫자를 1로 바꿉니다.

형식으로 인해 0잘 처리 됩니다. 빈 문자열 만 인쇄합니다.


1

빠른, 79 75 바이트

let f={{$0+$1}((1..<$0).reduce(("1","")){($0.0+" ? \($1+1)",$0.1+" : 0")})}

f하나의 Int매개 변수가 있는 함수로 암시 적으로 선언됩니다 .String

함께 작동 n >= 1때 런타임에 충돌 n == 0. 후행 공백이 없습니다

편집 : 문자열 보간이 항상 가장 짧은 것은 아니기 때문에 2 * 2 문자를 제거하도록 관리되었습니다.

편집 참고 사항 :이 코드는 컴파일하는 데 시간이 오래 걸리지 만 컴파일러가 처리 할 수있을 것입니다. 이 편집 이전의 버전을 살펴보면 컴파일 된 버전을 얻을 수 있습니다.


1

> <> , 32 + 3 = 35 바이트

:l(?vln" ? "ooo0$
"ooo>nl?!;" : 

두 번째 줄에는 후행 공백이 있습니다. +3은 -v플래그를 위한 것 입니다. 예 :

$ py -3 fish.py ternary.py -v 2
1 ? 2 : 0

다음 과 같은 코드 포인트로 입력 받기

i:l(?vln" ? "ooo0$!
 "ooo>nl?!;" :

34 바이트이지만 테스트하기가 쉽고 어쨌든 위의 버전을 선호하지 않습니다.

설명

꽤 많은 의사 재귀와 남용이 진행 중이므로 살펴 보겠습니다.

첫 번째 줄은 "1 ? 2 ? ... n-1 ? " 부품을 인쇄합니다 . 플래그 n덕분에 스택은 input만으로 시작 -v하며 다음을 수행합니다.

:l(?v           If (length of stack + 1 > n), go to the second line
ln              Print the length of the stack
" ? "ooo        Print the reverse of " ? " (but hey, palindromes)
0$              Push 0 and swap, keeping n on top and increasing the 
                length of the stack by 1

> <>는 환상적이므로 위의 스택은 0 n이 맨 위에 n-1있고 두 번째 줄로 이동할 때까지 루프에서 실행됩니다 .

두 번째 줄이 처음 실행될 때 n명령이 실행 n되어 스택 맨 위에 인쇄합니다 . 이것은 n-10을 남기고 루프에서 다음을 수행합니다.

l?!;            If the stack is empty, terminate
" : "ooo        Print the reverse of " : " (but hey, palin...)
n               Print one of the 0s, decreasing the stack's length by 1
                This reuses the same n instruction from before

" ? "ooo "?"( 반면 , palindromes) 의 반전은 실제 문자열을 인쇄하는 것보다 반전을 더 짧게 인쇄합니까?
Caridorc

@Caridorc 예,> <>는 스택에서 튀어
나와서

sp3000은 알고 반갑습니다.
Caridorc

1

스칼라, 78 71 52 50 바이트

def f(n:Int)=(1 to n).mkString(" ? ")+" : 0"*(n-1)

1

Objective-C, 346 바이트

-(void)printTernaryOfInt:(int)ternary{NSMutableString *outString=@"".mutableCopy; for (int i=1;i<=ternary;i++) {[outString appendString:[NSString stringWithFormat:@" ? %i",i]];}[outString deleteCharactersInRange:NSMakeRange(0, 2)];for (int i=1;i<ternary;i++) {[outString appendString:[NSString stringWithFormat:@" : 0"]];}NSLog(@"%@",outString);}

에서 퍼팅 0위해 int또는 아무것도의 부정적인 것은 제기 NSRangeException로 인한 outString포함 nil. 이것은 iOS 2.0 이상 및 많은 최신 버전의 Mac OS X에서 실행되어야합니다.

코드 분석 :

-(void)printTernaryOfInt:(int)ternary{ ... }

Objective-C의 표준 함수 선언

NSMutableString *outString=@"".mutableCopy;

출력 할 문자열을 만듭니다. outString 만들고 변경 가능하게 만듭니다. (즉, 읽고 쓸 수 있습니다.

for (int i=1;i<=ternary;i++) {[outString appendString:[NSString stringWithFormat:@" ? %i",i]];}

출력 할 문자열의 첫 부분을 추가합니다.

[outString deleteCharactersInRange:NSMakeRange(0, 2)];

문자열의 시작 부분을 정리하여 ? 1로 교체 하십시오 1. 참고 : 0주어진 경우 NSRangeException인덱스가 없기 때문에 이것이 발생하는 곳 1입니다.

for (int i=1;i<ternary;i++) {[outString appendString:[NSString stringWithFormat:@" : 0"]];}

문자열의 두 번째 부분을 문자열에 추가합니다.

NSLog(@"%@",outString);}

다음을 사용하여 끈을 다시 뱉습니다. NSLog기능을 닫습니다.

산출:

입력 0하면이 충돌 로그가 나타납니다.

    2015-07-11 05:15:28.036 Example App[41665:2134488] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFString deleteCharactersInRange:]: Range or index out of bounds'
*** First throw call stack:
(
    0   CoreFoundation                      0x009b5746 __exceptionPreprocess + 182
    1   libobjc.A.dylib                     0x0063ea97 objc_exception_throw + 44
    2   CoreFoundation                      0x009b566d +[NSException raise:format:] + 141
    3   CoreFoundation                      0x00981813 mutateError + 259
    4   CoreFoundation                      0x009818c1 -[__NSCFString deleteCharactersInRange:] + 65
    5   Example App                         0x000e3785 -[ViewController printTernaryOfInt:] + 277
    6   Example App                         0x000e3645 -[ViewController placeOrder:] + 133
    7   libobjc.A.dylib                     0x006547cd -[NSObject performSelector:withObject:withObject:] + 84
    8   UIKit                               0x00d75a40 -[UIApplication sendAction:to:from:forEvent:] + 99
    9   UIKit                               0x00d759d2 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 64
    10  UIKit                               0x00eb613a -[UIControl sendAction:to:forEvent:] + 69
    11  UIKit                               0x00eb6557 -[UIControl _sendActionsForEvents:withEvent:] + 598
    12  UIKit                               0x00eb57c1 -[UIControl touchesEnded:withEvent:] + 660
    13  UIKit                               0x00dcdcaa -[UIWindow _sendTouchesForEvent:] + 874
    14  UIKit                               0x00dce786 -[UIWindow sendEvent:] + 792
    15  UIKit                               0x00d8c681 -[UIApplication sendEvent:] + 242
    16  UIKit                               0x00d9cab8 _UIApplicationHandleEventFromQueueEvent + 21484
    17  UIKit                               0x00d702e7 _UIApplicationHandleEventQueue + 2300
    18  CoreFoundation                      0x008d706f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
    19  CoreFoundation                      0x008ccb7d __CFRunLoopDoSources0 + 253
    20  CoreFoundation                      0x008cc0d8 __CFRunLoopRun + 952
    21  CoreFoundation                      0x008cba5b CFRunLoopRunSpecific + 443
    22  CoreFoundation                      0x008cb88b CFRunLoopRunInMode + 123
    23  GraphicsServices                    0x029e42c9 GSEventRunModal + 192
    24  GraphicsServices                    0x029e4106 GSEventRun + 104
    25  UIKit                               0x00d740b6 UIApplicationMain + 1526
    26  Example App                         0x000e3cfa main + 138
    27  libdyld.dylib                       0x02d76ac9 start + 1
    28  ???                                 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

1 이것을 제공합니다 :

2015-07-11 05:06:02.360 Example App[41665:2134488]  1

2 이것을 제공합니다 :

2015-07-11 05:06:07.613 Example App[41665:2134488]  1 ? 2 : 0

7 이것을 제공합니다 :

2015-07-11 05:06:12.147 Example App[41665:2134488]  1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 : 0 : 0 : 0 : 0 : 0 : 0

200 이것을 제공합니다 :

2015-07-11 05:06:35.552 Example App[41665:2134488]  1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ? 10 ? 11 ? 12 ? 13 ? 14 ? 15 ? 16 ? 17 ? 18 ? 19 ? 20 ? 21 ? 22 ? 23 ? 24 ? 25 ? 26 ? 27 ? 28 ? 29 ? 30 ? 31 ? 32 ? 33 ? 34 ? 35 ? 36 ? 37 ? 38 ? 39 ? 40 ? 41 ? 42 ? 43 ? 44 ? 45 ? 46 ? 47 ? 48 ? 49 ? 50 ? 51 ? 52 ? 53 ? 54 ? 55 ? 56 ? 57 ? 58 ? 59 ? 60 ? 61 ? 62 ? 63 ? 64 ? 65 ? 66 ? 67 ? 68 ? 69 ? 70 ? 71 ? 72 ? 73 ? 74 ? 75 ? 76 ? 77 ? 78 ? 79 ? 80 ? 81 ? 82 ? 83 ? 84 ? 85 ? 86 ? 87 ? 88 ? 89 ? 90 ? 91 ? 92 ? 93 ? 94 ? 95 ? 96 ? 97 ? 98 ? 99 ? 100 ? 101 ? 102 ? 103 ? 104 ? 105 ? 106 ? 107 ? 108 ? 109 ? 110 ? 111 ? 112 ? 113 ? 114 ? 115 ? 116 ? 117 ? 118 ? 119 ? 120 ? 121 ? 122 ? 123 ? 124 ? 125 ? 126 ? 127 ? 128 ? 129 ? 130 ? 131 ? 132 ? 133 ? 134 ? 135 ? 136 ? 137 ? 138 ? 139 ? 140 ? 141 ? 142 ? 143 ? 144 ? 145 ? 146 ? 147 ? 148 ? 149 ? 150 ? 151 ? 152 ? 153 ? 154 ? 155 ? 156 ? 157 ? 158 ? 159 ? 160 ? 161 ? 162 ? 163 ? 164 ? 165 ? 166 ? 167 ? 168 ? 169 ? 170 ? 171 ? 172 ? 173 ? 174 ? 175 ? 176 ? 177 ? 178 ? 179 ? 180 ? 181 ? 182 ? 183 ? 184 ? 185 ? 186 ? 187 ? 188 ? 189 ? 190 ? 191 ? 192 ? 193 ? 194 ? 195 ? 196 ? 197 ? 198 ? 199 ? 200 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0

1

C, 84 78 바이트

함수로서 가장 짧지는 않지만 C :

i;f(n){while(++i<n)printf("%i ? ",i);printf("%i",n);while(--i)printf(" : 0");}

골프의 이름에서 int타입 지정은의 중단되고 i, f그리고 n그것은 기본이기 때문이다. i전역 변수이고 기본값은 0이므로 초기화되지 않을 수 있습니다. f값을 반환하지 않지만 경고 만 발생합니다. printf하지 않습니다 #include. 실행하려면 전체 프로그램 버전이 있습니다.

#include <stdio.h>

i;f(n){while(++i<n)printf("%i ? ",i);printf("%i",n);while(--i)printf(" : 0");}

int main(int argc, char *argv[]){
    if(argc != 2){
        return 1;
    }
    f(atoi(argv[1]));
    puts("");
}

을 사용하여이를 줄일 수 있습니다 for(printf(...);--i;).
lirtosiast

1

C, 63 바이트

재사용 가능한 함수는 인수로 n을 사용합니다.

i;f(n){for(i=1;i<2*n;i++)printf(i-1?n/i?" ? %d":" : 0":"1",i);}

Ungolfed and commented (꽤 간단) :

int f(int n) {
    int i;

    // 1 ... n, n+1 ... 2n-1
    for(i = 1; i < 2*n; i++) {
        // If i == 1, prints "1"
        // If i <= n, prints " ? %d", i (i = 2 ... n)
        // Else, prints " : 0" (i = n+1 ... 2n-1)
        printf(
            i-1 ?
                n/i ?
                    " ? %d" :
                    " : 0" :
                "1",
        i);
    }
}

1

커먼 리스프, 84

(format t "~{~A ? ~}~@*~{~[~;~:;0~^ ? ~]~}" (loop for i from 1 to (read) collect i))

먼저, 1에서 입력 (loop for i from 1 to (read) collect i)된 것까지 정수 목록을 생성합니다.이 목록은 함수의 유일한 인수로 사용됩니다. 그러나 그것의 진정한 마술은 제어 노이즈에서 라인 노이즈처럼 보입니다. "~{~A ? ~}"첫 번째 인수에 저장된 전체 목록을 반복하여 각 숫자를 ?첫 번째 반으로 출력합니다 . ~@*인수 목록을 첫 번째 인수로 재설정합니다. ~{~[~;~:;0~^ ? ~]~}목록을 반복하여 0 ?소비 된 각 인수에 대해 출력하지만 인수가 0 또는 1이면 아무것도 출력하지 않습니다.

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