[過去ログ] プログラミングのお題スレ Part13 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
877(16): さまよえる蟻人間 ◆T6xkBnTXz7B0 2019/05/09(木)22:20 ID:sZO2t0w0(1)調 AAS
お題: 改行とスペースを含むASCII文字列が与えられる。
改行とスペース以外の各印字可能文字の位置を以下のように順番に出力せよ。
(入力)
a b c
d
(出力)
[a, 0, 0]
[b, 2, 0]
[c, 5, 0]
[d, 0, 2]
881(1): 2019/05/10(金)11:56 ID:sggjdX/2(1)調 AAS
>>877
[c, 5, 0]?
[c, 4, 0]じゃなくて?
882: さすらいの蟻人間 ◆T6xkBnTXz7B0 2019/05/10(金)12:18 ID:8LSsTFj9(1)調 AAS
>>877 >>881
4の間違いでした。訂正。
883: 2019/05/10(金)12:30 ID:k7gY5pMP(1/3)調 AAS
>>877
出力は、行列番号が0から始まるとして
文字,列番号、行番号 だと思うから c の列番号は間違ってるんじゃないの?
(入力)
a b c
d
(出力)
[a, 0, 0]
[b, 2, 0]
[c, 4, 0] << 5じゃなくて4だろ。
[d, 0, 2]
886(2): 2019/05/10(金)13:27 ID:k7gY5pMP(2/3)調 AAS
>>877 python
st = '''a b c
d
'''
line = 0 ; col = 0
for c in st :
__if c == '\n' :
____line += 1
____col = 0
____continue
__if c != ' ' :
____print ('['+c, col,str(line)+']', sep=',')
__col += 1
888(6): さすらいの蟻人間 ◆T6xkBnTXz7B0 2019/05/10(金)14:51 ID:CF7UUf9v(1)調 AAS
お題: >>877 の入出力を逆転。
897: 2019/05/11(土)12:16 ID:Ze1v8w/9(2/2)調 AAS
>>877 Perl5
@in = map{[split'']} map{split '\n'} <<EOF;
a b c
d
EOF
for $j (0..$#in) {
for $i (0..$#{$in[$j]}) {
$c = $in[$j][$i];
print "[$c,$i,$j]\n" if $c =~ /\w/;
}
}
実行
~ $ perl 13_877.pl
[a,0,0]
[b,2,0]
[c,4,0]
[d,0,2]
904: 2019/05/14(火)02:59 ID:3xJ0OqNt(1)調 AAS
>>877
Kotlin
https://paiza.io/projects/Aab0mA1WSwXHnHL2049hCA
for や while ループ使わずに forEachIndexed で入れ子にしてみました。
905(2): 2019/05/14(火)09:26 ID:zeev4Evh(1)調 AAS
>>877
Ruby で
text = <<"EOT"
a b c
d
EOT
re = /[^ ]+/ # 空白以外
text.each_line.with_index do | line, idx | # 1行ずつ処理する
line.strip! # trim
# $~.begin は、マッチした先頭文字の位置
line.scan( re ) { puts "[" + [ $~.to_s, $~.begin(0), idx ].join( ", " ) + "]" }
end
906: 2019/05/14(火)10:07 ID:rKVVoOG1(1)調 AAS
>>886 をスッキリ修正してみた
改行コード指定をやめ、for loop のカウンタを利用
>>877 の解
st = '''a b c
d
'''
for line,l in enumerate(st.splitlines()) :
for col,c in enumerate(l):
if c != ' ' : print('['+c, col,str(line)+']',sep=',')
908(2): 2019/05/14(火)23:52 ID:AtHJrRxM(1)調 AAS
>>877 Squeak Smalltalk
| fn |
fn := [:str |
((str lines collectWithIndex: [:line :lIdx |
(line reject: #isSeparator) asArray
collect: [:chr | {chr. (line indexOf: chr) - 1. lIdx - 1}]]
) concatenation select: #notEmpty) asStringWithCr
].
fn value: 'a b c
d'
"=>
'#($a 0 0)
#($b 2 0)
#($c 4 0)
#($d 0 2)' "
911: 2019/05/15(水)04:50 ID:TsVBVaTo(1)調 AAS
>>877 Squeak/Pharo Smalltalk
出力はともかく同行に同文字があるとダメだった^^;ので>>908 差し替え
| fn |
fn := [:str |
((str lines collectWithIndex: [:line :lIdx |
(line asArray collectWithIndex: [:chr :cIdx | {chr. cIdx - 1. lIdx - 1}]
) reject: [:each | each first isSeparator]]
) concatenation
select: #notEmpty thenCollect: [:each | '[{1}, {2}, {3}]' format: each]) asStringWithCr
].
fn value: 'a b c
d'
"=>
[a, 0, 0]
[b, 2, 0]
[c, 4, 0]
[d, 0, 2] "
913(3): 2019/05/15(水)23:43 ID:jmndeABE(1)調 AAS
>>877 c
https://ideone.com/tIcQPK
>>877 ruby
https://ideone.com/qMREyy
>>877 ocaml
https://ideone.com/uaNmRF
>>877 octave
https://ideone.com/psnXl5
916(1): 2019/05/16(木)08:25 ID:MujhV/Cm(1)調 AAS
>>913 故意にpython 外しはずるい。
>>877 python
https://ideone.com/yvFuOl
printフォーマットは、コメントにしたpython3.6のf文字列の方がシンプルだが、ideone は3.5しかないのでformat文にした。
917: 2019/05/16(木)10:18 ID:YVMjr/q8(1/2)調 AAS
>>877
Go
https://ideone.com/mJOisR
コンパクトにならんね
919: 2019/05/16(木)19:26 ID:ktv4pd0R(1)調 AAS
>>877
C++
https://ideone.com/cbDkCt
924: 913 2019/05/16(木)23:00 ID:02wuysYU(1/2)調 AAS
>>877 ocaml
https://ideone.com/waZZh7
・自分に正直になってrefとforループで書いた
>>914
じょ、助長…
>>916
外しと言うより、たんに不勉強
python書けないんよね(´・ω・`)
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s