Language detail: Io
Coverage: 13.20%
|
number of '+' ratings |
contribution for coverage |
Unsolved challenges
- 文字列で+を表示する (Nested Flatten)
- 年賀はがきの当せん番号 (Nested Flatten)
- 箱詰めパズルの判定 (Nested Flatten)
- 関数やメソッドのソースの平均行数 (Nested Flatten)
- コレクションの実装 (Nested Flatten)
codes
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする
(Nested
Flatten)
空白を単語の区切りとしています。 文字列は標準入力で与えます。
1 | File standardInput readLine split map(capitalize)join(" ")println
|
九九の表示
(Nested
Flatten)
printfみたいなのは、ないようですが文字変換メソッドで桁数指定ができるようです。
1 | for(i,1,9,for(j,1,9,writeln(i," * ",j," = ",(i*j)asString(2,0))))
|
条件を満たす行を取り除く
(Nested
Flatten)
1 2 | f := File standardInput
while(i := f readLine, if(i at(0) != 35, i println))
|
重複する要素を取り除く
(Nested
Flatten)
Io> list(1,2,4,3,2,1,4,5,6,7) removeDup ==> list(3, 5, 6, 7)
1 2 3 | List removeDup := method(
self uniqueCount select(last == 1) map(first)
)
|
倍数になる13進数
(Nested
Flatten)
1 2 3 | i := 10
while(i asString fromBase(13) % i != 0, i = i + 1)
i println
|
情報オリンピック2006年度国内予選問題1
(Nested
Flatten)
1 | File standardInput readLines map(split map(asNumber)sum)max println
|
指定コマンドを別プロセスで起動
(Nested
Flatten)
ls -la を実行。
1 2 3 4 5 6 | sc := SystemCall clone
sc command = "ls"
sc arguments = list("-la")
sc run
sc stdout readLines foreach (it, it println) # 標準出力
sc returnCode println # リターンコード
|
コマンドライン引数の取得
(Nested
Flatten)
args に入ってるみたいです。(0 はスクリプト自身)
Lobby はトップレベルのオブジェクト自身です。
1 2 | args slice(1) println #=> list("a", "b", "c", "d")
Lobby args slice(1) println #=> same
|
呼んだのは誰?
(Nested
Flatten)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | foo := method(
call coroutine callStack at(2) message name
)
bar := method(
foo
)
baz := method(
foo
)
bar println
baz println
|
文字列のセンタリング
(Nested
Flatten)
Io で普通に書いてみました。alignCenter があるのできりつめるところだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | Sequence centered := method(width,
margin := (width - self size) / 2
if (margin < 0,
self slice(-margin, self size + margin)
,
self alignCenter(width)
)
)
# なんか手元のだと定義されていないので
Number to := method(i,
Range clone setRange(self, i)
)
0 to(7) foreach(i,
"proto" asMutable centered(i) justSerialized
"" println
)
/* output
""
"o"
"ro"
"rot"
"prot"
"proto"
"proto "
" proto "
*/
|
与えられた文字列でピラミッド
(Nested
Flatten)
文字を1文字づつ配列にするメソッドがあるのかどうかわからないので作りました。 Sequence split は 引数をあたえないと空白でわけるようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 | Sequence splitEvery := method(
l := list()
self foreach(v,
l append(v asCharacter)
)
return l
)
pyramid := method(str,
t := str size * 2 - 1
for(i, 1, str size,
str slice(str size - i, str size) splitEvery join(" ") alignCenter(t, " ") println
)
)
|
隣り合う二項の差
(Nested
Flatten)
1 2 3 4 5 6 7 8 9 10 | List diff := method(
res := list()
for(i, 0, self size - 2,
res append(self at(i+1) - self at(i))
)
return res
)
xs := list(3, 1, 4, 1, 5, 9, 2, 6, 5]
xs diff println
|
重複無し乱数
(Nested
Flatten)
1 2 3 4 5 6 | Number bingo := method(
Range
1 to(self) asList shuffle
}
10 bingo println
|
リストを逆順に表示
(Nested
Flatten)
next >>
1 2 | given_list := list(1, 2, 3, 4, 5)
given_list reverse foreach(i, i println)
|



anekos
#8413()
[
Io
]
Rating0/0=0.00
久しぶりやってみました。
Rating0/0=0.00-0+
[ reply ]