整数情绪


12

写一个程序或函数“起反应”,以一个给定的整数Ñ(通过函数输入参数/ ARGS /标准输入)

该程序不在乎负数,喜欢偶数,不喜欢奇数,而害怕数字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 2014年

@StandardToaster我编辑了输出条件以避免任何误解
Markuz

Answers:


4

果酱-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),并制作一个24字符的字符串,其中包含N个空格,S2,其他空格,S1,N个空格
2 (eyes) 6X3=- (F)~t将眼线放在矩阵
7'o5*_7F:Mt中普通嘴线在矩阵中,
X3={5Mt6'o_7Ft}*如果X为3,也将其保存在M中,再次将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}

这定义了一个称为like的函数f[13]。我敢肯定,还有很多改进的空间,类似于文特罗在这里帮助我做的事情

基本上,我首先要构建一个粗糙的框架,然后将耳朵和嘴巴连接起来。然后我根据数量放置眼睛。在计算要放入眼睛的字符时,我还要注意不同的嘴,因此不必再次检查数字的类型。最后,我需要将右眼固定为奇数,因为上面的代码将相同的字符串放入双眼。


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中字符串的项目分配!:(然后可以从字符矩阵开始,然后简单地修改眼睛和嘴巴。


最初,我实际上是为类似的PPCG挑战而学习Ruby的,正是由于这个原因,我需要不可变的字符串。:D
Martin Ender 2014年

您可以这样做b=bytearray(),然后b+'mystring'将生成一个可变的字节数组,该字节数组的打印方式与任何其他字符串相同。
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

果酱,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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.