ガジェット通信

見たことのないものを見に行こう

大人気ダンジョンシリーズ!循環のダンジョンの解説+最短コード発表

DATE:
  • ガジェット通信を≫

循環のダンジョン

今回の ダンジョンは、以下のような問題でした。

【問題】

標準入力から得られる値は「[213213213213,114214114214,434343439679]」のような、「角括弧で囲まれたカンマ区切りの数値」が並んだ文字列です。

このカンマ区切りの各要素を数値と見なして、2回以上繰り返されている場合は1を、そうでない場合は0を得て、「1,1,0」のような「カンマ区切り」にして、標準出力に戻します。

また、もし「12345 12345 12」のように、繰り返しが途切れている場合は「0」になります。

以下、例を示します。

例)
◆入力
[213213213213,114214114214,434343439679]

◆処理
213213213213の場合。
213 213 213 213 と繰り返されているので 1。

114214114214の場合。
114214 114214 と繰り返されているので 1。

434343439679の場合。
繰り返されていないので 0。

◆出力
1,1,0

【問題生成コード(JavaScript)】

// 疑似乱数
var rnd = (function() {
var z = 1234567890, x = z;
return function(){return(x=(x*z+z)&0x7FFFFFFF)>>16}
})();

var getS = function(n1, n2, n3) {
var r = “”, s = “”;
for (var i = n1; i–;) {s += n3 + rnd() % 4}
for (var i = n2; i–;) {r += s}
return r;
};

// 問題生成
var q = (function() {
var arr = [];
for (var i = 0; i < smplMax; i ++) {
var a = [1, 2, 3, 4, 6][rnd() % 5];
var b = 1 + rnd() % 12;
var c = [3, 4, 6][rnd() % 3];
var d = 12 – b;
var s = getS(a, b, 1) + getS(c, d, 6);
s = s.substr(0, 12);
arr.push(s);
}
return JSON.stringify(arr).replace(/”/g, “”);
})();
return q;
})(200);

この問題は、レベルごとに禁止事項が増えていきます。そのポイントと、解答コードを、以下に掲載します。

この問題は、言語不問ですが、解答例はJavaScriptで書きます。

レベル1解説

レベル1の禁止文字は、なしです。文字数制限600文字がありますが、基本的に自由にコードを書けます。

この問題は、いろいろな方法で解くことができます。ここでは、繰り返しパターンの認識ということで、正規表現を使って、答えを求めてみます。後方参照を使えば判定できます。

// 正規表現(85文字)
var a = eval(readline());
for (i in a) {
a[i] = +/^(.+)1+$/.test(a[i]);
}
print(a);

実はこの問題には、仕掛けがほどこされています。生成コードをよく見ると、繰り返される部分に使用されている文字は、1~4です。繰り返されない部分に使用されている文字は、6~9です。

そのことに気づくと、もっと短くコードを書くことができます。

// 末尾を見る1(82文字)
var a = eval(readline());
for (i in a) {
a[i] = +/[1-4]$/.test(a[i]);
}
print(a);

// 末尾を見る2(79文字)
var a = eval(readline());
for (i in a) {
a[i] = a[i] % 10 < 5 | 0;
}
print(a);

レベル2解説

レベル2では新たに、「 % /eval/i /for/i /while/i /until/i /loop/i /end/i /do/i > <」の禁止文字および正規表現が追加されています。これは、様々なプログラミング言語でループ処理を禁止するためのものです。

ループを使わず、配列をmapなどで処理それは、この制限は避けることができます。

以下、例を示します。分かりやすいように、処理を分解して書きます。

// 末尾を見る(100文字)
var a = readline().match(/[0-9]+/g);
a = a.map(function(s) {
return +/[1-4]$/.test(s)
});
print(a);

それでは以下、上位者のコードを紹介していきます。いろんなコードが見たいと思いますので、同じ方のコードでも、順位に当てはめて掲載しています。

レベル1「総合」の上位者コード(20位~11位)

20位のコード(72文字)

// みけCAT 様 (PHP)
<?php system(“perl -pe'”.’$_=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg’.”‘”);

19位のコード(70文字)

// iehn 様 (Ruby)
puts gets[1..-3].split(“,”).map{|s|s[0..3]*3==s||s==s[0..5]*2?1:0}*”,”

18位のコード(69文字)

// べーにー 様 (Python 3)
print(‘,’.join(str(1>>int(_)%9901)for _ in input()[1:-1].split(‘,’)))

17位のコード(68文字)

// ebicochineal 様 (Python)
print’,’.join(str((0in(i%(i/10**6),i%(i/10**8)))*1)for i in input())

// fine_M_account 様 (Ruby)
$><<gets[1..-3].split(“,”).map{|s|s[0,6]*2==s||s[0,4]*3==s ?1:0}*”,”

16位のコード(67文字)

// fine_M_account 様 (Ruby)
$><<gets[1..-3].split(“,”).map{|s|s[s[0,6]*2]||s[s[0,4]*3]?1:0}*”,”

15位のコード(66文字)

// ciel 様 (Ruby)
$><<gets.scan(/d+/).map{|s|s[0,4]==s[8,4]||s[0,6]==s[6,6]?1:0}*?,

// ciel 様 (Ruby)
$><<gets.scan(/d+/).map{|s|s[0,4]!=s[8,4]&&s[0,6]!=s[6,6]?0:1}*?,

14位のコード(65文字)

// Azicore 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

// y azshe 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

// kura07 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

13位のコード(62文字)

// mg57888 様 (Ruby)
$><<gets.scan(/d+/).map{|a|(a[0,6]*2==a||a[0,4]*3==a)?1:0}*?,

12位のコード(60文字)

// todaemon 様 (Ruby)
$><<gets.scan(/d+/).map{|s|s==s[0,6]*2||s==s[0,4]*3?1:0}*?,

// fine_M_account 様 (Ruby)
$><<gets[1..-3].gsub(/d+/){|s|s[s[0,6]*2]||s[s[0,4]*3]?1:0}

11位のコード(56文字)

// みけCAT 様 (Ruby)
puts gets.gsub(/[?(w+)]?/){$1.match(‘^(.+)1+$’)?1:0}

レベル1「総合」の上位者コード(10位~1位)

10位のコード(53文字)

// みけCAT 様 (Perl)
$a=<>;$a=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg;print$a

// kura07 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=a[i]%10<5|0;print(a)

9位のコード(52文字)

// gmk 様 (Ruby)
$><<gets.scan(/d+/).map{|s|s !~/^(d+)1+$/?0:1}*?,

8位のコード(51文字)

// gmk 様 (Ruby)
$><<gets.scan(/d+/).map{|s|s=~/^(d+)1+$/?1:0}*?,

// みけCAT 様 (Perl)
$_=<>;$_=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg;print

7位のコード(49文字)

// みけCAT 様 (Ruby)
puts gets[1..-3].gsub(/w+/){/^(.+)1+$/=~$&?1:0}

// gmk 様 (Ruby)
$><<gets[1..-3].gsub(/d+/){$&=~/^(d+)1+$/?1:0}

// みけCAT 様 (Bash)
perl -pe’$_=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg’

6位のコード(48文字)

// みけCAT 様 (Ruby)
$><<gets[1..-3].gsub(/w+/){/^(.+)1+$/=~$&?1:0}

// kura07 様 (Ruby)
$><<eval(*$<).map{|n|n.to_s=~/^(.+)1+$/?1:0}*?,

// gmk 様 (Ruby)
$><<gets[1..-3].gsub(/d+/){$&=~/^(.+)1+$/?1:0}

5位のコード(40文字)

// angel 様 (Perl)
$,=”,”;print map/^(.+)1+$/+0,<>=~/d+/g

4位のコード(36文字)

// べーにー 様 (Ruby)
$><<eval(gets).map{|_|1>>_%9901}*’,’

3位のコード(35文字)

// べーにー 様 (Ruby)
$><<eval(gets).map{|_|1>>_%9901}*?,

2位のコード(34文字)

// rotary-o 様 (Ruby)
$><<eval(*$<).map{|v|1>>v%9901}*?,

// PIN 様 (Ruby)
$><<eval(*$<).map{|i|1[i%9901]}*?,

1位のコード(32文字)

// rotary-o 様 (Ruby)
$><<eval(*$<).map{|v|-v%10/5}*?,

// kura07 様 (Ruby)
$><<eval(*$<).map{|n|-n%10/5}*?,

レベル2「総合」の上位者コード(20位~11位)

20位のコード(89文字)

// べーにー 様 (Python 3)
print(‘,’.join(map(lambda _:str(0**(_-_//9901*9901)),map(int,input()[1:-1].split(‘,’)))))

19位のコード(88文字)

// みけCAT 様 (Ruby)
y=92.chr;puts gets.gsub(Regexp.new y+'[?([0-9]+)’+y+’]?’){$1.match(‘^(.+)’+y+’1+$’)?1:0}

18位のコード(86文字)

// R修行中 様 (Python 3)
print(‘,’.join(map(lambda b:’01′[b[:4]*3==b or b[:6]*2==b],input()[1:-1].split(‘,’))))

// ebicochineal 様 (Python 3)
print(‘,’.join(map(lambda i:str((i in(3*i[:4],2*i[:6]))*1),input()[1:-1].split(‘,’))))

// k.hamada 様 (Ruby)
puts gets.chomp[1..-2].split(?,).map{|w|(2..6).any?{|i|w==w[0,i]*(12/i)}?1:0}.join(?,)

17位のコード(80文字)

// しゃろ 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|[1,2,3,4,6].any?{|n|s[0…n]*(12/n)==s}?1:0}*”,”

// n2_ 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|(2..l=s.length).any?{|i|s[0…l/i]*i==s}?1:0}*?,

// y azshe 様 (Ruby)
puts gets[1..-3].split(?,).map{|s|f=0;1.upto(6){|x|s==s[0,x]*(12/x)?f=1:0};f}*?,

16位のコード(79文字)

// gmk 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|s=~Regexp.new(“^([0-9]+)”+92.chr+”1+$”)?1:0}*?,

15位のコード(77文字)

// ebicochineal 様 (Python)
print ‘,’.join(map(lambda i:str((i in(i[:4]*3,i[:6]*2))*1),map(str,input())))

14位のコード(74文字)

// ebicochineal 様 (Ruby)
puts gets.chomp[1…-1].split(‘,’).map{|i|i==i[0,4]*3||i==i[0,6]*2?1:0}*?,

13位のコード(73文字)

// べーにー 様 (Python 3)
exec(‘l=’+input());print(‘,’.join(map(lambda _:str(0**pow(_,1,9901)),l)))

12位のコード(71文字)

// kura07 様 (JavaScript (spidermonkey))
print(readline().match(/[0-9]+/g).map(function(s){return~(s[11]/5)+2}))

11位のコード(70文字)

// gmk 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|s=~/^([0-9]+)#{92.chr+?1}+$/x ?1:0}*?,

// iehn 様 (Ruby)
puts gets[1..-3].split(“,”).map{|s|s[0..3]*3==s||s==s[0..5]*2?1:0}*”,”

// ciel 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|s[0,4]==s[8,4]||s[0,6]==s[6,6]?1:0}*?,

レベル2「総合」の上位者コード(10位~1位)

10位のコード(68文字)

// gmk 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|s=~/^([0-9]+)#{92.chr+?1}+$/?1:0}*?,

// fine_M_account 様 (Ruby)
puts gets[1..-3].split(“,”).map{|s|s[s[0,6]*2]||s[s[0,4]*3]?1:0}*”,”

// ebicochineal 様 (Ruby)
puts gets[1…-2].split(‘,’).map{|i|i==i[0,4]*3||i==i[0,6]*2?1:0}*?,

9位のコード(66文字)

// みけCAT 様 (Ruby)
puts gets[1..-3].gsub(/[^,]+/){$&.match(‘^(.+)’+92.chr+’1+$’)?1:0}

// mg57888 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|a|(a[0,6]*2==a||a[0,4]*3==a)?1:0}*?,

// gmk 様 (Ruby)
puts gets[1..-3].gsub(/[0-9]+/){$&=~/^([0-9]+)#{92.chr+?1}+$/?1:0}

8位のコード(64文字)

// kura07 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|s==s[0,4]*3||s==s[0,6]*2?1:0}*?,

// べーにー 様 (Ruby)
puts gets[1..-2].split(?,).map{|_|1[_.to_i-_.to_i/9901*9901]}*?,

// todaemon 様 (Ruby)
puts gets.scan(/[0-9]+/).map{|s|s==s[0,6]*2||s==s[0,4]*3?1:0}*?,

// fine_M_account 様 (Ruby)
puts gets[1..-3].gsub(/[0-9]+/){|s|s[s[0,6]*2]||s[s[0,4]*3]?1:0}

7位のコード(61文字)

// rotary-o 様 (Ruby)
puts gets[1..-3].gsub(/[0-9]+/){$&.to_i.modulo(9901)==0? 1:0}

// gmk 様 (Ruby)
puts gets[1..-3].gsub(/[^,]+/){$&=~/^(.+)#{92.chr+?1}+$/?1:0}

6位のコード(60文字)

// rotary-o 様 (Ruby)
puts gets[1..-3].gsub(/[0-9]+/){$&.to_i.modulo(9901)==0?1:0}

// べーにー 様 (Ruby)
puts gets[1..-2].split(?,).map{|_|1[_.to_i.modulo(9901)]}*?,

5位のコード(59文字)

// angel 様 (Perl)
#!perl -p
y#[]##d;s#[^,]+#’$&=~/^(.+)’.chr(92).’1+$/&1’#gee

4位のコード(56文字)

// angel 様 (Perl)
#!perl -p
y#[]##d;s#[^,]+#$&=~/^(.+)(??{“($1)+”})$/+0#ge

3位のコード(52文字)

// rotary-o 様 (Ruby)
puts gets.gsub(/[^,]+/){$&.to_i.modulo(9901)==0?1:0}

2位のコード(45文字)

// PIN 様 (Ruby)
puts gets.gsub(/[^,]+/){$&.to_i.gcd(9901)[3]}

// kura07 様 (Ruby)
puts gets.scan(/[1-4]+/).map{|s|s.size/12}*?,

1位のコード(40文字)

// rotary-o 様 (Ruby)
puts gets.gsub(/[^,]+/){$&=~/[6-9]/?0:1}

レベル1「Bash」の上位者コード(5位~1位)(有効回答数:4)

4位のコード(491文字)

// distancedsilhouette 様 (Bash)
export o=`pg`;make -f-<<‘Z’
e=
s=$e $e
c=,
S=$(subst 1,1 ,$(subst 2,2 ,$(subst 3,3 ,$(subst 4,4 ,$(subst 5,5 ,$(subst 6,6 ,$(subst 7,7 ,$(subst 8,8 ,$(subst 9,9 ,$(subst 0,0 ,$1))))))))))
D=$(if $(word $(words $2 $2),$(call S,$1) 1),$(if $(subst $(subst $s,,$(wordlist 1,$(words $2),$(call S,$1))),,$1),$(call D,$1,$2 1),1),0)
A=$(if $1,$(call D,$(firstword $1),1) $(call A,$(wordlist 2,$(words $1),$1)))
a:
@echo $(subst $s,$c,$(strip $(call A,$(subst [,,$(subst ],,$(subst $c, ,$o))))))
Z

3位のコード(167文字)

// hanada3355 様 (Bash)
tr ,[] “n”|xargs -n1 -i% bash -c ‘set — %;[[ ${1:0:6} == ${1:6:6} ]]&&echo 1|| ( [[ ${1:0:4}${1:4:4} == ${1:4:4}${1:8:4} ]]&&echo 1)||echo 0’|tr “n” ,|sed -e s/,$//

2位のコード(148文字)

// hanada3355 様 (Bash)
tr ,[] “n”|xargs -n1 -i% bash -c ‘set — %;[[ ${1:0:6} != ${1:6:6} ]]&&[[ ${1:0:4}${1:4:4} != ${1:4:4}${1:8:4} ]]&&printf 0,||printf 1,’|sed s/,$//

1位のコード(49文字)

// みけCAT 様 (Bash)
perl -pe’$_=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg’

レベル1「C」の上位者コード(5位~1位)(有効回答数:2)

2位のコード(547文字)

// Yasu.Hara. 様 (C)
#include <stdio.h>
#include <string.h>
char s[3000], n[601];
int p;
int k()
{
int i,l=strlen(n);
for(i=l/2;i>=2;i–) if (!(l%i)&&!strncmp(n,n+i,l-i)) return 1;
return 0;
}

int g()
{
int c,i=0;
while ((c=s[++p])>=’0’&& c<=’9′) {
if (i >= 600) return 0;
n[i++] = c;
}
n[i] = 0;
if (c==’,’) return 1;
if (c==’]’) return 2;
return 0;
}

int main()
{
int i,f;
while (fgets(s,sizeof(s),stdin)!=NULL) {
if (s[p=f=0]!='[‘) continue;
do {
if ((i=g())!=0) {
if (f++) printf(“,”);
printf(“%d”,k());
}
} while (i!=2);
}
}

1位のコード(431文字)

// gomadango 様 (C)
#include “stdio.h”

int main(int argc, char *argv[]) {
int c;
unsigned long long int lu;
c = getchar();
switch (c) {
case ‘]':
return 0;
case ‘[‘:
case ‘,':
if (c == ‘,’) putchar(c);
scanf(“%llu”, &lu);
if ((lu % 1000001L) == 0 || (lu % 100010001L) == 0)
putchar(‘1′);
else putchar(‘0′);
main(0, NULL);
return 0;
}
return 0;
}

レベル1「C#」の上位者コード(5位~1位)(有効回答数:4)

4位のコード(600文字)

// turky_9 様 (C#)
using System;
namespace IQ{
class Program{
static void Main(string[] args){
string[] lst=Console.ReadLine().Replace(“[“,””).Replace(“]”,””).Split(‘,’);
for(int i=0; i<lst.Length; i++){
string str = lst[i];
bool flg = true;
for(int zurashi=1; zurashi<= str.Length / 2; zurashi++){
flg = true;
int k;
for(k = 0; k < str.Length – zurashi; k++){
if(str[k] != str[k + zurashi]){
flg = false;
break;}}
if(flg){
for(; k < str.Length; k++){
if(str[k] != str[k – (str.Length – zurashi)]){flg = false;break;}}}
if(flg) break;
}
if(i != 0)Console.Write(“,”);
if(flg)
Console.Write(1);
else
Console.Write(0);}}}}

3位のコード(593文字)

// yuu341 様 (C#)

using System;
public class K
{
public static void Main(){Console.WriteLine(new S() { I = Console.ReadLine().Trim(‘[‘).Trim(‘]’) }.R());}
class S
{public string I { get; set; }public string R()
{
string r = “”;

foreach (var each in I.Split(‘,’)){r += C(each) + “,”;}
return r.Trim(‘,’);
}
private string C(string l)
{
var len = l.Length; var r = “0”;
for (int f = 1; f < len; f++)
{
if (len % f == 0)
{
r = “1”;
for (int i = f; i < len; i += f) {
if(l.Substring(0,f) != l.Substring(i,f)){r=”0″;}
}
if (r == “1”) return r;
}
}
return r;
}
}
}

2位のコード(407文字)

// Goodgood 様 (C#)
using System;
public class T{
public static void Main(){
string l,o,p=””,q;string[] m;
do{
l=Console.ReadLine();
if (l!=null){
m=l.Substring(1,l.Length-2).Split(‘,’);
foreach(string n in m){
if (p!=””) p+=”,”;q=”0″;
if (“”==n.Replace(n.Substring(n.Length/2),””)||””==n.Replace(n.Substring(n.Length/3*2),””))q=”1″;p+=q;
}
}
}while(l!=null);
Console.WriteLine(p);
}
}

1位のコード(345文字)

// Goodgood 様 (C#)
using System;public class T{public static void Main(){string l,o,p=””,q;string[] m;do{l=Console.ReadLine();if(l!=null){m=l.Substring(1,l.Length-2).Split(‘,’);foreach(string n in m){if(p!=””)p+=”,”;q=”0″;if(“”==n.Replace(n.Substring(n.Length/2),””)||””==n.Replace(n.Substring(n.Length/3*2),””))q=”1″;p+=q;}}}while(l!=null);Console.WriteLine(p);}}

レベル1「C++」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(597文字)

// wararaki 様 (C++)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int match(string t, string s, int l){for(int i=l;i<s.size();i+=l)if(t!=s.substr(i,l))return 0;return 1;}
int check(string s){for(int i=1,l=s.size();i<=(l+1)/2;++i)if(l%i==0 && match(s.substr(0, i), s, i))return 1;return 0;}
void solve(string s){
vector<string> v;
for(int i=1,l=s.size()-1;i<l;++i){string t = “”;for(;i < l; ++i){if(s[i] == ‘,’)break;t += s[i];}v.push_back(t);}
for(int i=0;i<v.size()-1;++i)cout << check(v[i]) << “,”;cout<<check(v.back())<<endl;
}
int main(){string s;cin >> s;solve(s); return 0;}

レベル1「Groovy」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(230文字)

// parroty 様 (Groovy)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
println(br.readLine().replaceAll(/[[]]/, “”).trim().split(“,”).collect { q ->
[1, 2, 3, 4, 6].any { n -> q[0..n-1] * (12 / n) == q } ? 1 : 0
}.join(“,”))

レベル1「Haskell」の上位者コード(5位~1位)(有効回答数:7)

5位のコード(148文字)

// スクィーラ 様 (Haskell)
f s | any (g s) [1..6] = 1
f s = 0
g s n = s == take 12 (cycle $ take n s)
main = putStr . tail . init . show . map (f.show.(1*)) . read =<< getLine

4位のコード(146文字)

// スクィーラ 様 (Haskell)
f s | any (n -> s == take 12 (cycle $ take n s)) [1..6] = 1
f s = 0
main = putStr . tail . init . show . map (f . show . (1*)) . read =<< getLine

3位のコード(120文字)

// スクィーラ 様 (Haskell)
f=g.show.(1*)
g s|flip any[1..6]$(==)s.take 12.cycle.flip take s=1
g s=0
main=putStr.tail.init.show.map f.read=<<getLine

2位のコード(113文字)

// スクィーラ 様 (Haskell)
f s|any((==)s.take 12.cycle.flip take s)[1..6]=1
f s=0
main=putStr.tail.init.show.map(f.show.(1*)).read=<<getLine

1位のコード(107文字)

// スクィーラ 様 (Haskell)
f s|any((==)s.take 12.cycle.flip take s)[1..6]=1
f s=0
main=readLn>>=putStr.tail.init.show.map(f.show.(1*))

レベル1「JavaScript (spidermonkey)」の上位者コード(5位~1位)(有効回答数:41)

5位のコード(80文字)

// GoldPointer 様 (JavaScript (spidermonkey))
print(eval(readline()).map(function(a){return a==[b=a%1e6]+b|a==[c=a%1e4]+c+c}))

// GoldPointer 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))A=a[i],a[i]=A==[b=A%1e6]+b|A==[c=A%1e4]+c+c;print(a)

4位のコード(76文字)

// みけCAT 様 (JavaScript (spidermonkey))
print(readline().match(/w+/g).map(function(a){return+/^(.+)1+$/.test(a)}))

// chat 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))n=a[i],a[i]=+!(n/1e4-n%1e8&n/1e6-n%1e6);print(a)

3位のコード(73文字)

// Azicore 様 (JavaScript (spidermonkey))
for(i in a=readline().match(/d+/g))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

// y azshe 様 (JavaScript (spidermonkey))
for(i in a=readline().match(/w+/g))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

2位のコード(65文字)

// Azicore 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

// y azshe 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

// kura07 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=+/^(.+)1+$/.test(a[i]);print(a)

1位のコード(53文字)

// kura07 様 (JavaScript (spidermonkey))
for(i in a=eval(readline()))a[i]=a[i]%10<5|0;print(a)

レベル1「Nemerle」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(276文字)

// ciel 様 (Nemerle)
using System.Runtime.InteropServices;
class NemerleCompiler{
[DllImport(“msvcrt”,CallingConvention=CallingConvention.Cdecl)]static extern system(s:string):int;
static Main():void{system(“ruby -e ‘puts gets.scan(/[0-9]+/).map{|s|s[0,4]==s[8,4]||s[0,6]==s[6,6]?1:0}*44.chr'”);}}

レベル1「Node.js」の上位者コード(5位~1位)(有効回答数:3)

3位のコード(582文字)

// しらたき@ふぁっとまん 様 (Node.js)
var ps = process.stdin;
ps.resume();
ps.setEncoding(‘utf8′);
function chk(s) {for (var i = 1; i < s.length; i++) {if (s.length%i !== 0) {continue;}var p = s.substr(0, i);var r = new RegExp(p, “g”);var m = s.match(r);if (p.length * m.length === s.length) {return 1;}}return 0;}

ps.resume();
ps.setEncoding(‘utf8′);
ps.on(‘data’, function (c) {
var l = c.toString().split(‘n’);
for(var i=0; i<l.length; i++) {
var d = l[i].replace(/[|]/g, “”).split(“,”);
var r = “”;
for (var i = 0; i < d.length; i++) {
r += chk(d[i]);
r += (i !== d.length – 1) ? “,” : “”;
}console.log(r);
}
});

2位のコード(573文字)

// しらたき@ふぁっとまん 様 (Node.js)
function chk(s) {
for (var i = 1; i < s.length; i++) {
var p = s.substr(0, i);
var r = new RegExp(p, “g”);
var m = s.match(r);

if (p.length * m.length === s.length) {
return 1;
}
}

return 0;
}

var p = process.stdin;
p.resume();
p.setEncoding(‘utf8′);
p.on(‘data’, function (c) {
var l = c.toString().split(‘n’);
for(var i=0; i<l.length; i++) {
var d = l[i].replace(/[|]/g, “”).split(“,”);
var r = “”;
for (var i = 0; i < d.length; i++) {
r += chk(d[i]);
r += (i !== d.length – 1) ? “,” : “”;
}

console.log(r);
}
});

1位のコード(126文字)

// みけCAT 様 (Node.js)
p=process;p.stdin.on(“data”,function(c){p.stdout.write(“”+(c+””).match(/w+/g).map(function(a){return+/^(.+)1+$/.test(a)}))})

レベル1「Perl」の上位者コード(5位~1位)(有効回答数:5)

5位のコード(296文字)

// パパンダ 様 (Perl)
while(<>){chop;$line.=$_;}$line=~s/[[]]//g;@v=split(‘,’,$line);@a=();foreach$s(@v){$n=length($s);for($i=int($n/2);$i>=1;$i–){next if($n%$i!=0);$p = substr($s,0,$i);$k=$n/$i;for($j=1;$j<$k;$j++){last if($p ne substr($s,$j*$i,$i));}last if($j==$k);}push @a, ($i>=1)?1:0;}print join(“,”,@a),”n”;

4位のコード(277文字)

// パパンダ 様 (Perl)
while(<>){$l.=$_;}$l=~s/[[]n]//g;@v=split(‘,’,$l);foreach$s(@v){$n=length($s);for($i=int($n/2);$i>=1;$i–){next if($n%$i!=0);$p = substr($s,0,$i);$k=$n/$i;for($j=1;$j<$k;$j++){last if($p ne substr($s,$j*$i,$i));}last if($j==$k);}push @a,($i>=1)?1:0;}print join(“,”,@a),”n”;

3位のコード(53文字)

// みけCAT 様 (Perl)
$a=<>;$a=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg;print$a

2位のコード(51文字)

// みけCAT 様 (Perl)
$_=<>;$_=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg;print

1位のコード(40文字)

// angel 様 (Perl)
$,=”,”;print map/^(.+)1+$/+0,<>=~/d+/g

レベル1「PHP」の上位者コード(5位~1位)(有効回答数:3)

3位のコード(549文字)

// kinotomo 様 (PHP)
<?php
preg_match_all(“[d{12}]”, fgets(STDIN), $matches);

$result = array();
foreach($matches[0] as $key => $match) {
$length = strlen($match);
for($i = 6; $i > 0; $i–) {
if (12 % $i == 0) {
$splitStrs = str_split($match, $i);
$splitStrs = array_unique($splitStrs);
if (count($splitStrs) == 1) {
$result[$key] = 1;
break;
} else {
$result[$key] = 0;
}
}
}
}
echo join(‘,’, $result);

2位のコード(84文字)

// PIN 様 (PHP)
<?=eval(‘foreach(‘.fgets(STDIN).’ as$v)$a[]=bcmod($v,9901)?0:1;’);echo join(‘,’,$a);

1位のコード(72文字)

// みけCAT 様 (PHP)
<?php system(“perl -pe'”.’$_=~s/[?(w+)]?/0|$1=~m!^(.+)1+$!/eg’.”‘”);

レベル1「Python」の上位者コード(5位~1位)(有効回答数:14)

5位のコード(108文字)

// roiti46 様 (Python)
print”,”.join(“01″[any(s.replace(s[:i],””)==””for i in range(len(s)))]for s in raw_input()[1:-1].split(“,”))

4位のコード(104文字)

// mInarI 様 (Python)
print ‘,’.join([str(int(t[8:12]==t[4:8]==t[:4]or t[6:12]==t[:6]))for t in raw_input()[1:-1].split(‘,’)])

3位のコード(101文字)

// juchi 様 (Python)
print ‘,’.join([str(max([1 if 12/j*i[:j]==i else 0 for j in range(2,7)])) for i in map(str,input())])

2位のコード(78文字)

// hirosuzuki 様 (Python)
print”,”.join(`+any(str(a)==12/n*`a`[:n]for n in(1,2,3,4,6))`for a in input())

1位のコード(68文字)

// ebicochineal 様 (Python)
print’,’.join(str((0in(i%(i/10**6),i%(i/10**8)))*1)for i in input())

レベル1「Python 3」の上位者コード(5位~1位)(有効回答数:10)

5位のコード(109文字)

// R修行中 様 (Python 3)
print(‘,’.join(’01′[any([b[:len(b)//n]*n==b for n in range(2,len(b)+1)])] for b in input()[1:-1].split(‘,’)))

4位のコード(99文字)

// べーにー 様 (Python 3)
l=input()[1:-1].split(‘,’);print(‘,’.join(str(int(_[:6]==_[6:]or _[:4]==_[4:8]==_[8:]))for _ in l))

3位のコード(81文字)

// R修行中 様 (Python 3)
print(‘,’.join(’01′[b[:4]*3==b or b[:6]*2==b] for b in input()[1:-1].split(‘,’)))

2位のコード(74文字)

// べーにー 様 (Python 3)
print(‘,’.join(str(int(int(_)%9901==0))for _ in input()[1:-1].split(‘,’)))

1位のコード(69文字)

// べーにー 様 (Python 3)
print(‘,’.join(str(1>>int(_)%9901)for _ in input()[1:-1].split(‘,’)))

レベル1「Ruby」の上位者コード(5位~1位)(有効回答数:62)

5位のコード(48文字)

// みけCAT 様 (Ruby)
$><<gets[1..-3].gsub(/w+/){/^(.+)1+$/=~$&?1:0}

// kura07 様 (Ruby)
$><<eval(*$<).map{|n|n.to_s=~/^(.+)1+$/?1:0}*?,

// gmk 様 (Ruby)
$><<gets[1..-3].gsub(/d+/){$&=~/^(.+)1+$/?1:0}

4位のコード(36文字)

// べーにー 様 (Ruby)
$><<eval(gets).map{|_|1>>_%9901}*’,’

3位のコード(35文字)

// べーにー 様 (Ruby)
$><<eval(gets).map{|_|1>>_%9901}*?,

2位のコード(34文字)

// rotary-o 様 (Ruby)
$><<eval(*$<).map{|v|1>>v%9901}*?,

// PIN 様 (Ruby)
$><<eval(*$<).map{|i|1[i%9901]}*?,

1位のコード(32文字)

// rotary-o 様 (Ruby)
$><<eval(*$<).map{|v|-v%10/5}*?,

// kura07 様 (Ruby)
$><<eval(*$<).map{|n|-n%10/5}*?,

レベル1「Scala」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(416文字)

// masaakif0123 様 (Scala)
// 循環のダンジョン 言語不問 – LEVEL1
// https://codeiq.jp/challenge/2466
object Main extends App {
def isRepeated(c:Int, ss:String):Int = {
val s = ss.take(c)
ss.split(s).filterNot(_==””).size match {
case 0 => 1
case 1 => 0
case _ => isRepeated(c+1, ss)
}
}
// your code goes here
val as = readLine.tail.init.split(“,”)
val r = for (a <- as) yield isRepeated(1, a)

println(r.mkString(“,”))
}

レベル1「Scheme (guile)」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(295文字)

// neko_the_shadow 様 (Scheme (guile))
(use-modules(srfi srfi-13)(srfi srfi-14))(let p((a ‘())(l(string-tokenize(symbol->string(read))char-set:digit)))(if(null? l)(display(string-join(reverse a)”,”))(let q((i 1)(s(car l))(t(cdr l)))(cond((= i 7)(p(cons “0” a)t))((equal? s(xsubstring s 0 12 0 i))(p(cons”1″a)t))(else(q(+ i 1)s t))))))

レベル1「VB.NET」の上位者コード(5位~1位)(有効回答数:3)

3位のコード(584文字)

// あずまっくす 様 (VB.NET)
Module A
Sub Main()
Dim O,Z,C As String
O = Console.ReadLine
Dim I As String() = Mid(O,2,O.Length-2).Split(“,”)
For Each W As String In I
Dim R As Integer=0
Dim A As New String(Left(W,1),12)
If W=A Then R=1
If R=0 And Left(W,6)=Right(W,6) Then R=1
C=Left(W,4)
If R=0 And C=Mid(W,5,4) And C=Right(W,4) Then R=1
C=Left(W,3)
If R=0 And C=Mid(W,4,3) And C=Mid(W,7,3) And C=Right(W,3) Then R=1
C=Left(W,2)
If R=0 And C=Mid(W,3,2) And C=Mid(W,5,2) And C=Mid(W,7,2) And C=Mid(W,9,2) And C=Right(W,2) Then R=1
Z &= CStr(R) & “,”
Next
Console.WriteLine(Left(Z,Z.Length – 1))
End Sub
End Module

2位のコード(284文字)

// えちごやえちぜん 様 (VB.NET)
Module M:Sub Main():Dim i,j,k,l,m As Int32:Dim s=Console.ReadLine():Dim q()=Split(Mid(s,2,Len(s)-2),”,”):l=q.Length-1:Dim r(l):For j=0 To l:k=0:For i=2 To 6:s=””:For m=1To 12i:s+=Left(q(j),i):Next:k+=(q(j)=s):Next:r(j)=chr(49+(k=0)):Next:Console.Write(Join(r,”,”)):End Sub:End Module

1位のコード(249文字)

// えちごやえちぜん 様 (VB.NET)
Option Explicit Off
Module M
Sub Main()
s=Console.ReadLine()
Dim q()=Split(Mid(s,2,Len(s)-2),”,”)
For Each p In q:k=0
For i=2To 6:s=””
For n=1To 12i:s+=Left(p,i):Next
k+=(p=s)
Next
t+=Iif(k,”,1″,”,0″)
Next
Console.Write(Mid(t,2))
End Sub:End Module

レベル2「Bash」の上位者コード(5位~1位)(有効回答数:4)

4位のコード(344文字)

// distancedsilhouette 様 (Bash)
export o=`pg`;echo ‘XQAAAAL//////////wAyjz1HZTZIeE693QWSJDmJFQeOd
O+x1v3RdvauoqFXkVhZ3c5YzYf/JdNxWg6YJYDd05voT9QmVp/i0RySSzjNhOy2Fb87okJZG6N1UT4GPx7cKZUk9gVd5qbZROR3edyzZGC8u/wf6jjSHDLbxCQcdH4BUAGDl7fHbpenSQE2Y3WEcVgGrSea1LVnaBANV0oclt9wcZllliP3SEPIa/Dtd4ZJSQ/mNmcM+Ijo90o27U4zcQ1VJgf417076fm1oH/v679sNhX4EpP9g/5eTTE=’|base64 -d|unlzma|make -f-

3位のコード(155文字)

// hanada3355 様 (Bash)
tr -c -d 1-9,|xargs -n1 -d, -i_ bash -c ‘set — _;[[ ${1:0:6} != ${1:6:6} ]]&&[[ ${1:0:4}${1:4:4} != ${1:4:4}${1:8:4} ]]&&printf 0,||printf 1,’|sed s/,$//

2位のコード(140文字)

// hanada3355 様 (Bash)
tr -c -d 1-9,|xargs -n1 -d, -i_ bash -c ‘set — _;[ ${1:0:6} != ${1:6:6} ]&&[ ${1:0:4}${1:4:4} != ${1:4:4}${1:8:4} ];printf $?,’|sed s/,$//

1位のコード(114文字)

// hanada3355 様 (Bash)
tr -cd 1-9,|xargs -d, -i_ bash -c ‘set _;[ ${1:0:6} != ${1:6:6} ]&&[ ${1:0:8} != ${1:4:8} ];printf $?,’|sed s/.$//

レベル2「C」の上位者コード(5位~1位)(有効回答数:4)

4位のコード(385文字)

// Yasu.Hara. 様 (C)
#include “stdio.h”
#include “string.h”
char s[3000],k[600];
int main()
{
int c,j,p,l;
fgets(s,sizeof(s),stdin);
if (s[p=0]!='[‘) return 1;
goto o;
m: printf(“,”);
o: j=0;
q: if ((c=s[++p])!=’]’&&c!=’,’) { k[j++]=c; goto q; }
k[j]=0;
j=(l=strlen(k))/2;
n: if (l/j*j==l&&!strncmp(k,k+j,l-j)) printf(“1″);
else if (–j-1) goto n; else printf(“0″);
if (c!=’]’) goto m;
return 0;
}

3位のコード(248文字)

// Yasu.Hara. 様 (C)
#include”stdio.h”
char s[5000];main(){int c,j,l,p=0;fgets(s,5000,stdin);if(*s==91){m:printf(p?”,”:””);l=0;q:if((c=s[++p])-93&&c-44){s[l++]=c;goto q;}s[l]=0;j=l/2;n:if((l/j*j-l||strncmp(s,s+j,l-j))&&–j-1)goto n;printf(j-1?”1″:”0″);if(c-93)goto m;}}

2位のコード(211文字)

// Yasu.Hara. 様 (C)
#include”stdio.h”
main(){int j;char*p,s[j=3000];fgets(p=s,j,stdin);if(*p==91){goto q;m:printf(“,”);q:if(*++p/16==3)goto q;j=6;n:if(strncmp(p-12,p-12+j,12-j)&&(j=j*3/4))goto n;printf(j?”1″:”0″);if(*p-93)goto m;}}

1位のコード(159文字)

// Yasu.Hara. 様 (C)
#include”stdio.h”
main(){char*p,s[3000];fgets(p=s,3000,stdin);q:if(*p&34){if(*p++&4)printf(“,”);printf(memcmp(p,p+6,6)&memcmp(p,p+4,8)?”0″:”1″);p+=12;goto q;}}

レベル2「C#」の上位者コード(5位~1位)(有効回答数:4)

4位のコード(398文字)

// ebicochineal 様 (C#)
using System;using System.Linq;class P{static void Main(){var s=Console.ReadLine();Console.Write(string.Join(“,”,s.Substring(1,s.Length-2).Split(‘,’).Select(delegate(string i){return (Enumerable.Range(2,i.Length/2).Select(delegate(int j){return new System.Text.StringBuilder().Insert(0,i.Substring(0,j),i.Length/j).ToString()==i;}).Any(delegate(bool k){return k;})?1:0).ToString();}).ToArray()));}}

3位のコード(387文字)

// Goodgood 様 (C#)
using System;public class T{public static void Main(){string l;string[] m;l=Console.ReadLine();m=l.Substring(1,l.Length-2).Split(‘,’);Console.WriteLine(a(0,m));}private static string a(int i,string[] m){if(i==m.Length)return””;string q=”0″;if(“”==m[i].Replace(m[i].Substring(m[i].Length/2),””)||””==m[i].Replace(m[i].Substring(m[i].Length/3*2),””))q=”1″;return(i==0?””:”,”)+q+a(i+1,m);}}

2位のコード(374文字)

// Goodgood 様 (C#)
using System;public class T{public static void Main(){string l;string[] m;l=Console.ReadLine();m=l.Substring(1,l.Length-2).Split(‘,’);Console.WriteLine(a(0,m));}public static string a(int i,string[] m){if(i==m.Length)return””;return(i==0?””:”,”)+((“”==m[i].Replace(m[i].Substring(m[i].Length/2),””)||””==m[i].Replace(m[i].Substring(m[i].Length/3*2),””))?”1″:”0″)+a(i+1,m);}}

1位のコード(327文字)

// ebicochineal 様 (C#)
using System;using System.Linq;class P{static string f(string s,int i){return i==1?s:s+f(s,–i);}static void Main(){var s=Console.ReadLine();Console.Write(string.Join(“,”,s.Substring(1,s.Length-2).Split(‘,’).Select(delegate(string i){return (new[]{f(i.Substring(8),3),f(i.Substring(6),2)}.Contains(i)?”1″:”0″);}).ToArray()));}}

レベル2「Haskell」の上位者コード(5位~1位)(有効回答数:2)

2位のコード(235文字)

// スクィーラ 様 (Haskell)
{-#LANGUAGE UnboxedTuples#-}
import GHC.Base
b a=IO.(m a)
m a b s=let(#o,p#)=unIO b s;(#q,r#)=unIO(a p)o;in(#q,r#)
f=g.show.(1*)
g s|flip any[1..6]$(==)s.take 12.cycle.flip take s=1
g s=0
main=b(putStr.tail.init.show.map f.read)getLine

1位のコード(136文字)

// スクィーラ 様 (Haskell)
import Control.Monad
f s|any((s==).take 12.cycle.flip take s)[1..6]=1
f s=0
main=join$fmap(putStr.tail.init.show.map(f.show.(1*)))readLn

レベル2「JavaScript (spidermonkey)」の上位者コード(5位~1位)(有効回答数:26)

5位のコード(101文字)

// GoldPointer 様 (JavaScript (spidermonkey))
print(readline().match(/[0-9]+/g).map(function(a){b=a.slice(6);c=a.slice(8);return a==b+b|a==c+c+c}))

4位のコード(100文字)

// kura07 様 (JavaScript (spidermonkey))
print(readline().match(/[0-9]+/g).map(function(s){return(t=s.slice(6))+t==s|(t=s.slice(8))+t+t==s}))

3位のコード(96文字)

// Azicore 様 (JavaScript (spidermonkey))
print(readline().match(/[0-9]+/g).map(function(a){return+(a/-~1e6+’.’)|+(a/100010001+’.’)?1:0}))

2位のコード(94文字)

// Azicore 様 (JavaScript (spidermonkey))
print(readline().match(/[0-9]+/g).map(function(a){return+(a/~1e6+’.’)|+(a/~10001e4+’.’)?1:0}))

1位のコード(71文字)

// kura07 様 (JavaScript (spidermonkey))
print(readline().match(/[0-9]+/g).map(function(s){return~(s[11]/5)+2}))

レベル2「Node.js」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(276文字)

// ciel 様 (Nemerle)
using System.Runtime.InteropServices;
class NemerleCompiler{
[DllImport(“msvcrt”,CallingConvention=CallingConvention.Cdecl)]static extern system(s:string):int;
static Main():void{system(“ruby -e ‘puts gets.scan(/[0-9]+/).map{|s|s[0,4]==s[8,4]||s[0,6]==s[6,6]?1:0}*44.chr'”);}}

レベル2「Nemerle」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(164文字)

// みけCAT 様 (Node.js)
p=process;p.stdin.on(“data”,function(c){p[“std”+”out”].write(“”+(c+””).match(/[0-9]+/g).map(function(a){return+!!a.match(“^(.+)”+String.fromCharCode(92)+”1+$”)}))})

レベル2「Perl」の上位者コード(5位~1位)(有効回答数:3)

3位のコード(91文字)

// みけCAT 様 (Perl)
system join(chr(92),(‘perl -pe’.”‘”.’$_=~s/’,'[?(‘,’w+)’,’]?/0|$1=~m!^(.+)’,’1+$!/eg’.”‘”))

2位のコード(59文字)

// angel 様 (Perl)
#!perl -p
y#[]##d;s#[^,]+#’$&=~/^(.+)’.chr(92).’1+$/&1’#gee

1位のコード(56文字)

// angel 様 (Perl)
#!perl -p
y#[]##d;s#[^,]+#$&=~/^(.+)(??{“($1)+”})$/+0#ge

レベル2「Python」の上位者コード(5位~1位)(有効回答数:13)

5位のコード(135文字)

// みすじ 様 (Python)
print “,”.join(map(lambda s:”1″if any(map(lambda n:1==len(set(zip(*[iter(s)]*n))),[3,4,6]))else”0″,raw_input().strip(“[]”).split(“,”)))

4位のコード(127文字)

// roiti46 様 (Python)
def f(s):i=r=0;exec’r|=s.replace(s[:i],””)==””;i+=1;’*len(s);return “01”[r]
print”,”.join(map(f, raw_input()[1:-1].split(“,”)))

3位のコード(113文字)

// 獏(ばく) 様 (Python)
l=len
m=map
s=str
print “,”.join(m(lambda n:s(int(any(m(lambda j:n[:l(n)/j]*j==n,range(2,l(n)))))),m(s,input())))

2位のコード(96文字)

// ebicochineal 様 (Python)
print ‘,’.join(map(lambda i:str(any(map(lambda j:12/j*i[:j]==i,[2,3,4,6]))*1),map(str,input())))

1位のコード(77文字)

// ebicochineal 様 (Python)
print ‘,’.join(map(lambda i:str((i in(i[:4]*3,i[:6]*2))*1),map(str,input())))

レベル2「Python 3」の上位者コード(5位~1位)(有効回答数:19)

5位のコード(106文字)

// ebicochineal 様 (Python 3)
print(‘,’.join(map(lambda i:str(any(map(lambda j:12//j*i[:j]==i,[2,3,4,6]))*1),input()[1:-1].split(‘,’))))

4位のコード(92文字)

// べーにー 様 (Python 3)
print(‘,’.join(map(lambda _:str(int(_-_//9901*9901==0)),map(int,input()[1:-1].split(‘,’)))))

3位のコード(89文字)

// べーにー 様 (Python 3)
print(‘,’.join(map(lambda _:str(0**(_-_//9901*9901)),map(int,input()[1:-1].split(‘,’)))))

2位のコード(86文字)

// R修行中 様 (Python 3)
print(‘,’.join(map(lambda b:’01′[b[:4]*3==b or b[:6]*2==b],input()[1:-1].split(‘,’))))

// ebicochineal 様 (Python 3)
print(‘,’.join(map(lambda i:str((i in(3*i[:4],2*i[:6]))*1),input()[1:-1].split(‘,’))))

1位のコード(73文字)

// べーにー 様 (Python 3)
exec(‘l=’+input());print(‘,’.join(map(lambda _:str(0**pow(_,1,9901)),l)))

レベル2「Ruby」の上位者コード(5位~1位)(有効回答数:48)

5位のコード(61文字)

// rotary-o 様 (Ruby)
puts gets[1..-3].gsub(/[0-9]+/){$&.to_i.modulo(9901)==0? 1:0}

// gmk 様 (Ruby)
puts gets[1..-3].gsub(/[^,]+/){$&=~/^(.+)#{92.chr+?1}+$/?1:0}

4位のコード(60文字)

// rotary-o 様 (Ruby)
puts gets[1..-3].gsub(/[0-9]+/){$&.to_i.modulo(9901)==0?1:0}

// べーにー 様 (Ruby)
puts gets[1..-2].split(?,).map{|_|1[_.to_i.modulo(9901)]}*?,

3位のコード(52文字)

// rotary-o 様 (Ruby)
puts gets.gsub(/[^,]+/){$&.to_i.modulo(9901)==0?1:0}

2位のコード(45文字)

// PIN 様 (Ruby)
puts gets.gsub(/[^,]+/){$&.to_i.gcd(9901)[3]}

// kura07 様 (Ruby)
puts gets.scan(/[1-4]+/).map{|s|s.size/12}*?,

1位のコード(40文字)

// rotary-o 様 (Ruby)
puts gets.gsub(/[^,]+/){$&=~/[6-9]/?0:1}

レベル2「Scala」の上位者コード(5位~1位)(有効回答数:2)

2位のコード(380文字)

// masaakif0123 様 (Scala)
object Main {
def isRepeated(ss:String) = isRepeatedMain(1,ss)
def isRepeatedMain(c:Int, ss:String):Int = {
val sz = ss.split(ss.take(c)).filterNot(_==””).size
if (sz == 0) 1
else if (sz == 1) 0
else isRepeatedMain(c+1,ss)
}
def main(args:Array[String]) = {
val as = readLine.tail.init.split(“,”)
val r = as.map(isRepeated)

println(r.mkString(“,”))
}
}

1位のコード(152文字)

// スクィーラ 様 (Scala)
object Main {def main(a:Array[String])=print((“[0-9]+”r).findAllIn(readLine).map(s⇒if((1 to 6).exists(x⇒s==s.take(x)*(12/x)))1 else 0).mkString(“,”))}

レベル2「Scheme (guile)」の上位者コード(5位~1位)(有効回答数:1)

1位のコード(296文字)

// neko_the_shadow 様 (Scheme (guile))
(use-modules(srfi srfi-13)(srfi srfi-14)(ice-9 rdelim))(let p((a ‘())(l(string-tokenize(read-line)char-set:digit)))(if(null? l)(display(string-join(reverse a)”,”))(let q((i 1)(s(car l))(t(cdr l)))(cond((= i 7)(p(cons”0″a)t))((equal? s(xsubstring s 0 12 0 i))(p(cons”1″a)t))(else(q(+ i 1)s t))))))

■ 文字数の分布

今回の問題の文字数の分布をまとめておきます。

レベル1では、130文字以内が多く、80文字を切った辺りから上位者争いという感じでした。

平均は196.25文字でした。

レベル2では、70文字以内は上位を争っている方々だという印象でした。

平均は167.53文字。こちらは、120文字を切っていれば、かなりの腕前だと思います。

CodeIQ運営事務局より

柳井さん、ありがとうございました!
現在、柳井さんの最新問題が出題中です。
ぜひ挑戦してみてくださいね!

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

TOP