정수 감정


12

주어진 정수 n에 "반응하는"프로그램 또는 함수 작성 (함수 매개 변수 / args / stdin을 통해 입력)

이 프로그램은 음수에 신경 쓰지 않고 짝수를 좋아하며 홀수를 싫어하고 13을 두려워합니다.

다음을 출력해야합니다.

n <0 인 경우 :

 --------------------------
 |                        |
 |                        |
(|      _          _      |)
 |                        |
 |                        |
 |                        |
 |                        |
 |       oooooooooo       |
 |                        |
 |                        |
 |                        |
 --------------------------

n % 2 == 0이고 n> -1 인 경우 :

 --------------------------
 |                        |
 |                        |
(|      ^          ^      |)
 |                        |
 |                        |
 |                        |
 |     o            o     |
 |       oooooooooo       |
 |                        |
 |                        |
 |                        |
 --------------------------

n % 2 == 1이고 n> -1이고 n! = 13 인 경우 :

 --------------------------
 |                        |
 |                        |
(|      >          <      |)
 |                        |
 |                        |
 |                        |
 |                        |
 |       oooooooooo       |
 |     o            o     |
 |                        |
 |                        |
 --------------------------

n == 13 인 경우 :

 --------------------------
 |                        |
 |                        |
(|     (O)        (O)     |)
 |                        |
 |                        |
 |       oooooooooo       |
 |       o        o       |
 |       oooooooooo       |
 |                        |
 |                        |
 |                        |
 --------------------------

바이트 단위의 최단 솔루션이 이깁니다.


2
13은 홀수입니다. 한 면만 출력합니까? 네거티브는 이상하고 짝수입니다.

@ MartinBüttner의 경우 음수에 대한 첫 번째 규칙은 완전히 필요하지 않습니다. 실제로 모든 규칙을 요구하는 유일한 우선 순위는 첫 번째 규칙과 마지막 규칙이 중간 규칙보다 우선 순위를 갖는 것입니다.
피터 테일러

@PeterTaylor 죄송합니다, 좋은 지적입니다.
Martin Ender

@StandardToaster 나는 어떤 오해를 피하기 위해 출력 조건을 편집
Markuz

답변:


4

CJam-169

S24*aB*2li_D=3{_0<2{_2%}?}?\;:X"^^<>__":s"(O)"a2*+2/=~6X3=-{S*_@+_,C\-S*2*+@@++}:F~t7'o5*_7F:MtX3={5Mt6'o_7Ft}*X2<{X2*6+'o_5Ft}*{" |"\+'|+}%S'-26*+aa2*\*_3=1>"()"\*3\tN*

http://cjam.aditsu.net/ 에서 시도 하십시오

높은 수준의 설명 :

S24*aB*가장자리
li_D=3{_0<2{_2%}?}?\;:X가 없는면 이 숫자를 읽고 0 (짝수), 1 (홀수), 2 (음수) 또는 3 (13)으로 변환하기 위해 행렬을 공백으로 가득 채 웁니다. X에 저장
X"^^<>__":s"(O)"a2*+2/=~하면 눈 유형이 선택됩니다 (2). 문자열)
{S*_@+_,C\-S*2*+@@++}:F- 함수 F 2 개 스트링 (예를 들어 S1, S2)와 숫자 (N 말) 소요 N 공간, S2, 다른 공간들, S1, N 스페이스 들어 24 문자 문자열하게
2 (eyes) 6X3=- (F)~t매트릭스에두고 눈 라인
7'o5*_7F:Mt둔다을
X3={5Mt6'o_7Ft}*X가 3이면 M에 저장하고, X가 3이면 M에 다시 저장하고 , 2 줄 더 높은
X2<{X2*6+'o_5Ft}*곳에 X 를 입력하고 , X가 0 또는 1 인 경우에 입 측면을 넣습니다. 적절한 위치 는 개행 구분 기호를 추가합니다
{" |"\+'|+}% 세로 가장자리가 추가되고 모든 줄의 왼쪽에 공백이
S'-26*+aa2*\*추가되고 가로 가장자리
_3=1>"()"\*3\t가 귀에 추가됩니다
N*


4

루비, 241 224

f=->n{s=" #{?-*26}
"
s+=" |#{' '*24}|
"*11+s
s[84]=?(
s[110]+=?)
s[233,12]=m=?O*12
s[91,3]=s[102,3]=n<0?' _ ':n==13?(s[177,12]=m;s[205]=s[216]=?O;'(O)'):(s[203+d=n%2*56]=s[218+d]=?O;" #{n%2<1??^:b=?>} ")
s[103]=?<if b
$><<s}

이것은 호출 될 함수를 정의합니다 f[13] . Ventero가 저에게 도움을 준 것과 비슷한 개선의 여지가 많이 있다고 확신 합니다 .

기본적으로 나는 거친 프레임 워크를 먼저 만들고 입과 귀를 연결합니다. 그런 다음 숫자에 따라 눈을 놓습니다. 눈에 들어가기 위해 캐릭터를 운동하는 동안, 나는 또한 다른 입을 돌보아 서 숫자의 유형을 다시 확인할 필요가 없습니다. 마지막으로 위의 코드가 같은 문자열을 두 눈에 넣기 때문에 홀수에 대해 오른쪽 눈을 수정해야합니다.


4

C #-349 바이트

확실히 어떤 상도받지는 않지만 다른 일을하는 방식입니다.

골프 :

class P{static void Main(string[]A){int j=64,i,r=0,n=int.Parse(A[0]);for(var f=(n<0?"IDID-TDTD-":n==13?"HDHD(IDIDOJDJD)SDSD(TDTDOUDUD)KIRI JHSJo":n%2<1?"IDID^TDTD^HIHIoUIUIo":"IDID>TDTD<HKHKoUKUKo")+@"JJSJoCBZM BB[M|BA[N-ADAD(\D\D)AA\N AA]N"+"\n";j++<78;)for(i=64;i++<93;System.Console.Write(f[r]))for(r=0;f[r++]>i|f[r++]>j|i>f[r++]|j>f[r++];r++);}}

덜 골프 :

class P
{
    static void Main(string[]A)
    {
        int j=64,i,r=0,n=int.Parse(A[0]); // everything is offset by 65 in this program

        for(
            var f=(n<0?"IDID-TDTD-": // this string describes a set of rectangles (x1,y1,x2,y2,ch)
                n==13?"HDHD(IDIDOJDJD)SDSD(TDTDOUDUD)KIRI JHSJo":
                n%2<1?"IDID^TDTD^HIHIoUIUIo":
                "IDID>TDTD<HKHKoUKUKo"
                )+@"JJSJoCBZM BB[M|BA[N-ADAD(\D\D)AA\N AA]N"+"\n";

            j++<78;) // the loop then prints the rectangles to the screen
            for(i=64;i++<93;System.Console.Write(f[r]))
                for(r=0;f[r++]>i|f[r++]>j|i>f[r++]|j>f[r++];r++);
    }
}

3

파이썬 2-255

아니 정말 짧은,하지만 난 어쨌든 게시합니다 :

n=input()
o='o'
S='  '
w=y=7*S
b=' '+'-'*26+'\n'
p=' |%19s     |\n'
E=p%y*2
v=S+o*10+S
u=z=o+6*S+o
A=a='^ '
if n%2:A='< ';a='> ';u=y;w=z
if n<0:A=a='_ ';u=w=y
if n==13:A=a='(O)';u=w=v;v=S+o+S*4+o+S
print b+E+'(|%8s%11s     |)\n'%(a,A)+E+p%u+p%v+p%w+E+b

파이썬에서 문자열에 대한 항목 할당이 누락되었습니다! :( 문자 행렬로 시작하여 눈과 입을 간단하게 수정할 수 있습니다.


원래 필자는 그 이유 때문에 불변 문자열이 필요한 유사한 PPCG 챌린지에서 Ruby를 실제로 배웠습니다. : D
Martin Ender

당신은 할 수있는 b=bytearray()다음과 b+'mystring'다른 문자열과 동일한 방식으로 인쇄하는 가변 된 ByteArray를 생성합니다.
Veedrac

3

파이썬 2, 257

승자가 아니라 다른 접근 방식이 아주 가까워졌습니다! 나는 몇 가지 문자를 더 짜낼 수 있기를 바랍니다. 공통 서브 스트링을 사용하여 모든 행을 한 조각 씩 작성하여 실제로 바이트를 짜냅니다.

X,Z=R=" |"
Q=X*5
Y=X*7
A=X+"-"*26
B=R+X*24+Z
n=input()
a,b,c,d,e,f,g=((("^>^<o  o "+Q)[n%2::2],"OO  ()o")[n==13],"__"+Q)[n<0]
for F in(A,B,B,"(|"+Q+e+a+f+Y+X+e+b+f+Q+"|)",B,B,R+Y+g*10+Y+Z,R+Q+c+X+g+Y+X+g+X+c+Q+Z,R+Y+"o"*10+Y+Z,R+Q+d+Y+Q+d+Q+Z,B,B,A):print F

2

CJam, 202

[S'-26*N]:Z[S'|:PS24*PN]:RR'(PS5*qi:XD=X0<-X2%2*+:Y[" ^ "_" > ""(O)"" - "__]=S8*Y[" ^ ""   "" < ""(O)"" - "__]=S5*P')NRRXD=[SPS7*'oA*S7*PN]:QR?Y[[SPS5*'oSC*'oS5*PN]:T_R[SPS7*'oS8*'oS7*PN]RRR]=QY2=TR?RRZ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.