[過去ログ] プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
583
(6): デフォルトの名無しさん [] 2017/10/25(水)20:13 ID:gieh1Z5o(1)
お題
())())のように括弧のみからなる文字列が与えられるので
すべての括弧が正しく対応付けされるためには
最低で何箇所の括弧を逆向きに変更すればよいか求めよ
例えば上の例では2文字目か3文字目を変更すればよいので1を出力せよ
何文字変更しても正しく対応付けできない場合は-1を出力せよ

) -> -1
())()) -> 1
)()()( -> 2
)))((( -> 4
(())())((())(()( -> 3
())((())()))()(((()))()((((((((()()(())) -> ?
584: デフォルトの名無しさん [sage] 2017/10/25(水)21:21 ID:/TQ9iqwZ(1)
>>583 Java
https://ideone.com/Oca2HR
585: デフォルトの名無しさん [] 2017/10/26(木)00:42 ID:0Gn/TXrF(1)
>>583
Ruby
https://ideone.com/wQA5TN
586: デフォルトの名無しさん [sage] 2017/10/26(木)07:09 ID:vEkFybta(1)
>>583
https://ideone.com/OkCwgQ
C++。効率とかショートコーディングとかそういうものをかなぐり捨ててべた書き。
あってるかな?
588: デフォルトの名無しさん [sage] 2017/10/26(木)08:35 ID:8oLfrbud(2/2)
誤爆
>>583 Ruby

def calc str
return -1 if str.size.odd?
ary = optimise str.scan(/(?=.)(\(*)(\)*)/).map{|a, b| a.size - b.size}
(-ary[0] + ary[1].to_i).abs/2 + ary[0]%2
end

def optimise ary
a = ary.reject(&:zero?).chunk(&:positive?).to_a.transpose[1].map(&:sum)
return a if a.size < 3
a.unshift(0) if a[0] < 0
optimise a.each_slice(2).map(&:sum)
end

STR = %w{
)
())())
)()()(
)))(((
(())())((())(()(
())((())()))()(((()))()((((((((()()(()))
}

STR.each{|s| puts "%s -> %d"%[s, calc(s)]} #=>
) -> -1
())()) -> 1
)()()( -> 2
)))((( -> 4
(())())((())(()( -> 3
())((())()))()(((()))()((((((((()()(())) -> 5
589: デフォルトの名無しさん [sage] 2017/10/26(木)19:12 ID:MqWL4ZqL(1)
>>583 ruby
https://ideone.com/jGTfL3
590: デフォルトの名無しさん [sage] 2017/10/27(金)22:31 ID:sfTuRN3o(1)
>>583
@Mathematica

https://ideone.com/19n4r2
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s