อารมณ์จำนวนเต็ม


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ในกรณีนั้นกฎข้อแรกเกี่ยวกับจำนวนลบนั้นไม่จำเป็นเลย ลำดับความสำคัญเดียวที่จริงต้องใช้กฎทั้งหมดสำหรับคนแรกและคนสุดท้ายที่จะมีความสำคัญมากกว่าคนกลาง
Peter Taylor

@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) string)
{S*_@+_,C\-S*2*+@@++}:F- ฟังก์ชั่น F ใช้ 2 สาย (พูด S1, S2) และตัวเลข (พูด N) และทำให้สตริง 24-char มี N ช่องว่าง, S2, ช่องว่างอื่น ๆ , S1, ช่องว่าง N
2 (eyes) 6X3=- (F)~tทำให้เส้นตาในเมทริกซ์
7'o5*_7F:Mtทำให้ ปากทั่วไปในเมทริกซ์และยังบันทึกไว้ใน M
X3={5Mt6'o_7Ft}*ถ้า X เป็น 3 มันทำให้ M อีกครั้งในเมทริกซ์สูงกว่า 2 บรรทัดและวางด้านปากไว้ระหว่าง
X2<{X2*6+'o_5Ft}*ถ้า 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

Python 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

ฉันพลาดการกำหนดไอเท็มสำหรับสตริงใน Python! :( จากนั้นหนึ่งสามารถเริ่มต้นด้วยเมทริกซ์ของตัวละครและเพียงแค่ปรับเปลี่ยนดวงตาและปาก


เดิมทีฉันได้เรียนรู้ Ruby สำหรับความท้าทาย PPCG ที่คล้ายกันซึ่งฉันต้องการสตริงที่ไม่เปลี่ยนรูปด้วยเหตุผลนั้น : D
Martin Ender

คุณสามารถทำb=bytearray()แล้วb+'mystring'จะสร้าง bytearray ที่ไม่แน่นอนซึ่งพิมพ์ในลักษณะเดียวกันกับสตริงอื่น ๆ
Veedrac

3

Python 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.