体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【言語不問】正規表現で暗号を解こう!エニ熊の暗号文【コーディング】解答と解説

// SUZAKU 様 (542 文字)
import java.util.regex.*;
import java.util.*;
class RegularExpression {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String target = "";
while(scan.hasNext()) {
target += scan.next() + "n";
}
String regex = "(\w)(\w)\1";
Pattern pattern = Pattern.compile(regex);
Matcher match = pattern.matcher(target);
while(match.find()) {
target = match.replaceAll("$2");
match.reset(target);
}
System.out.println(target);
}
}

JavaScript (rhino)

有効回答数5。

// lightpurplewisteria 様 (227 文字)
d=new java.util.Scanner(java.lang.System.in);
s=u=”
while(d.hasNext())s+=d.nextLine()+’rn’;
function c(t){for(i=0;i

Prolog (swi)

有効回答数1。

// pelicanlord 様 (407 文字)
trans([X,A,X|Rest] , [A|Rest]):-!.
trans([X|Rest],[X|Rest1]):-
trans(Rest,Rest1).

decode(X,Code):-
trans(X,Y),!,
decode(Y,Code).
decode(X,X).
writelist([]):-nl.
writelist([X|Rest]):-
format(“~c”,X),
writelist(Rest).

solve:-
at_end_of_stream(user_input).
solve:-
readln([Str]),
string_to_list(Str,List),
decode(List,Code),
writelist(Code),
solve.

:-prompt(_,”),
solve.

Python

有効回答数14。

// だいじゅ 様 (163 文字)
import re

try:
while True:
s = raw_input()
while True:
s, n = re.subn(“(w)(w)\1”, “\2″, s)
if n == 0:
break
print s
except EOFError:
pass

// Kezy 様 (166 文字)
import re
try:
while True:
s=raw_input()
while s!=re.sub(r”(w)(w)1″,r”2″,s):
s=re.sub(r”(w)(w)1″,r”2”,s)
print s
except EOFError:
pass

// mmiehana 様 (189 文字)
import re
import copy

try:
while True:
l = raw_input()
while True:
c = copy.copy(l)
l = re.sub(r'(w)(w)1′, r’2′, l)
if c == l:
break
print l
except EOFError:
pass

Python 3

有効回答数18。

// ほげはげ 様 (168 文字)
import re
import sys

for s in sys.stdin.read().split():
while re.match(r’.*(w)(w)(1).*’, s):
s = re.sub(r'(w)(w)(1)’, r’2′, s, count=1)
print(s)

// soliton_at_evolve 様 (196 文字)
import fileinput, re

for line in fileinput.input():
s = str(line.strip())
while s :
t = re.compile(r”(.)(.)1″).sub(r”2″, s)
if t == s : break
s = t
print (s)

// ボヤッキー 様 (200 文字)
import re
import sys

for line in sys.stdin.readlines():
x = line.strip()
while True:
y = re.sub(r'(.)(.)1′, r’2′, x)
if x == y:
break
x = y
print(x)

Ruby

有効回答数58。

// rotary-o 様 (39 文字)
#!ruby -p
0while$_.sub! /(.)(.)1/,’2′

// y azshe 様 (50 文字)
puts $

前のページ 1 2 3 4
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。