読者です 読者をやめる 読者になる 読者になる

simudaru's blog

Python, Rなどのメモを残していこうと思います。  よろしくお願いいたします。

【CodeIQ】第2回デスマコロシアム

第2回デスマコロシアムに参加し、見事敗退しました。

https://codeiq.jp/magazine/2014/05/9744/

 第1回も敗退と、なかなか勝てないです……。

 

Rで64文字、下記コードで参加しました。

R

x=12289;intToUtf8(sort(rep(65:90,8))+c(32,0,x,x+96,x+96,x,0,32))

Rは下記解答の方がいらっしゃったようで。最短ならず。

cat(intToUtf8(outer(utf8ToInt("aAあアアあAa"),0:25,'+')))

cat()は省略可能ですね。

第2回では正解扱いにして頂いたようですが、余計な文字列が出力されると不正解のため、cat()は省略不可能でした。訂正いたします。

 

utf8ToInt("aAあアアあAa")が手元の環境でうまく使えず諦めたのですが、

ideone上だとちゃんと動く。なんで?

次回からは最初からideone使おうと思いました。

ideone(R 2-11.1) 

 97    65 12354 12450 12450 12354    65    97

手元の環境(R3.1.0(64bit版))

 97  65 130 160 131  65 131  65 130 160  65  97

 

outerは気づきませんでした。自分のより短いです。

intToUtf8(outer(utf8ToInt("aAあアアあAa"),0:25,'+'))

intToUtf8(sort(rep(0:25,8))+utf8ToInt("aAあアアあAa")))

 

 

他にも、下記を作っており、Python2.7で出れば言語最短でした。

Python2.7  (107文字)

x=12289

print "".join(unichr(i+j) for i in range(65,91) for j in (32,0,x,x+96,x+96,x,0,32)).encode('utf8')

 

Python3 (68文字)

print("".join(chr(ord(j)+i) for i in range(26) for j in "aAあアアあAa"))

最短の方は65文字で、こちら。forの前とinの後、スペースなくても動くのですね。

print(''.join(chr(ord(c)+i)for i in range(26)for c in'aAあアアあAa'))

 

 

次こそは勝ちたいですが、なんか次回ルールは複雑そう!