プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/test/read.cgi/tech/1514772904/
プログラミングのお題スレ Part11
https://mevius.5ch.net/test/read.cgi/tech/1524570314/
探検
プログラミングのお題スレ Part12
■ このスレッドは過去ログ倉庫に格納されています
2018/09/28(金) 10:09:07.13ID:phwOkayR
674デフォルトの名無しさん
2018/11/24(土) 04:00:55.96ID:7YEvwBu9 >>659 javascript
`
* aaa
* bbb
* ccc
* aaa
* bbb
* ccc
`.split`\n\n`.map(ol => `<ol><li>${ol.match(/(?<=\* ).*/g).join`</li><li>`}</li></ol>`).join`\n`
出力:
<ol><li>aaa</li><li>bbb</li><li>ccc</li></ol>
<ol><li>aaa</li><li>bbb</li><li>ccc</li></ol>
// 本物のdocument fragment作っちゃう版
var fragment = `
* aaa
* bbb
* ccc
* aaa
* bbb
* ccc
`.trim().split`\n\n`.map(ol => ol
.match(/(?<=\* ).*/g)
.reduce((acc, li) => (acc.appendChild(document.createElement`li`).innerHTML = li, acc), document.createElement`ol`))
.reduce((acc, ol) => (acc.appendChild(ol), acc), document.createDocumentFragment())
document.querySelector('div#target').appendChild(fragment)など任意のエレメントにそのままappend可能。
`
* aaa
* bbb
* ccc
* aaa
* bbb
* ccc
`.split`\n\n`.map(ol => `<ol><li>${ol.match(/(?<=\* ).*/g).join`</li><li>`}</li></ol>`).join`\n`
出力:
<ol><li>aaa</li><li>bbb</li><li>ccc</li></ol>
<ol><li>aaa</li><li>bbb</li><li>ccc</li></ol>
// 本物のdocument fragment作っちゃう版
var fragment = `
* aaa
* bbb
* ccc
* aaa
* bbb
* ccc
`.trim().split`\n\n`.map(ol => ol
.match(/(?<=\* ).*/g)
.reduce((acc, li) => (acc.appendChild(document.createElement`li`).innerHTML = li, acc), document.createElement`ol`))
.reduce((acc, ol) => (acc.appendChild(ol), acc), document.createDocumentFragment())
document.querySelector('div#target').appendChild(fragment)など任意のエレメントにそのままappend可能。
675デフォルトの名無しさん
2018/11/24(土) 05:34:48.85ID:Dcky2N9A676デフォルトの名無しさん
2018/11/24(土) 05:38:41.45ID:Q9o1GKtC >>628
C (その2)
https://paiza.io/projects/21K5fAVsJlYtob_H0rZ9LA
よく考えたら出来た。
循環になっている桁の最初の余りを取っておいて次に出るまでカウントすれば良いだけで余りを全て保存しておく必要ないんだな。
C (その2)
https://paiza.io/projects/21K5fAVsJlYtob_H0rZ9LA
よく考えたら出来た。
循環になっている桁の最初の余りを取っておいて次に出るまでカウントすれば良いだけで余りを全て保存しておく必要ないんだな。
677デフォルトの名無しさん
2018/11/24(土) 05:41:18.30ID:Dcky2N9A >>675の言語は
JavaScript( Windows Scripting Host用 )ね
JavaScript( Windows Scripting Host用 )ね
678デフォルトの名無しさん
2018/11/24(土) 08:20:40.93ID:01jBobXF >>659
Ruby で作った。ただし、最終行に改行を追加した
text = <<"EOT"
* aaa
* bbb
* xxx
* yyy
EOT
buf = ""; result = ""
text.each_line do |line| # 1行ずつ処理する
line.chomp! # 末尾の改行を削除する
case
when line.empty? # 空文字列
result += "<ul>" + buf + "</ul>" + "\n" # ul で囲む
buf = ""
when line.start_with?( "* " )
buf += "<li>" + line.slice!( 2..-1 ) + "</li>" # "* " 以後の部分を取り出す
else
raise
end
end
puts result
Ruby で作った。ただし、最終行に改行を追加した
text = <<"EOT"
* aaa
* bbb
* xxx
* yyy
EOT
buf = ""; result = ""
text.each_line do |line| # 1行ずつ処理する
line.chomp! # 末尾の改行を削除する
case
when line.empty? # 空文字列
result += "<ul>" + buf + "</ul>" + "\n" # ul で囲む
buf = ""
when line.start_with?( "* " )
buf += "<li>" + line.slice!( 2..-1 ) + "</li>" # "* " 以後の部分を取り出す
else
raise
end
end
puts result
679デフォルトの名無しさん
2018/11/24(土) 11:05:11.18ID:1C+vWWG1 2人以上(1ユーザーに対し、1PC以上)のジャンケンゲームを作れ。
・勝ちグループにユーザーが居れば勝ちとする。
・グー=g、チョキ=v、パー=wとする。
・グー、チョキ、パー以外が入力されたら、あいこ扱い。
・全員の手もその都度表示。
例
Rock, Paper, Scissors! ―じゃんけんぽん(またはあいこでしょ)の英語版
(Rock = g/G, Paper = w/W, Scissors = v/V)
g
[("You",'g'),("PC1",'v'),("PC2",'g')]
You Win!!
・勝ちグループにユーザーが居れば勝ちとする。
・グー=g、チョキ=v、パー=wとする。
・グー、チョキ、パー以外が入力されたら、あいこ扱い。
・全員の手もその都度表示。
例
Rock, Paper, Scissors! ―じゃんけんぽん(またはあいこでしょ)の英語版
(Rock = g/G, Paper = w/W, Scissors = v/V)
g
[("You",'g'),("PC1",'v'),("PC2",'g')]
You Win!!
680デフォルトの名無しさん
2018/11/24(土) 12:06:59.71ID:X5g7u0K6 >>679
def janken(hand, opp_number)
hands = opp_number.times.map{%w[g v w].sample}.unshift(hand)
p hands.map.with_index{|h, i| [i == 0 ? 'You' : "PC#{i}", h]}
return 'Draw' if hands.uniq.size != 2
hands = hands.uniq.join.sum == 0xDE ? %w[w g] : hands.uniq.sort
['You Win!', 'You Lose!'][hands.index(hand)]
end
puts janken(?g, 1)
# => [["You", "g"], ["PC1", "v"]]
You Win!
puts janken(?v, 2)
# => [["You", "v"], ["PC1", "v"]]
Draw
puts janken(?w, 3)
# => [["You", "w"], ["PC1", "g"], ["PC2", "v"]]
Draw
puts janken(?g, 4)
# => [["You", "g"], ["PC1", "g"], ["PC2", "g"], ["PC3", "v"], ["PC4", "v"]]
You Win!
def janken(hand, opp_number)
hands = opp_number.times.map{%w[g v w].sample}.unshift(hand)
p hands.map.with_index{|h, i| [i == 0 ? 'You' : "PC#{i}", h]}
return 'Draw' if hands.uniq.size != 2
hands = hands.uniq.join.sum == 0xDE ? %w[w g] : hands.uniq.sort
['You Win!', 'You Lose!'][hands.index(hand)]
end
puts janken(?g, 1)
# => [["You", "g"], ["PC1", "v"]]
You Win!
puts janken(?v, 2)
# => [["You", "v"], ["PC1", "v"]]
Draw
puts janken(?w, 3)
# => [["You", "w"], ["PC1", "g"], ["PC2", "v"]]
Draw
puts janken(?g, 4)
# => [["You", "g"], ["PC1", "g"], ["PC2", "g"], ["PC3", "v"], ["PC4", "v"]]
You Win!
681デフォルトの名無しさん
2018/11/24(土) 12:08:52.78ID:X5g7u0K6682デフォルトの名無しさん
2018/11/24(土) 12:14:16.56ID:X5g7u0K6 >>680
「・グー、チョキ、パー以外が入力されたら、あいこ扱い」を見落としていたので
return 'Draw' if hands.uniq.size != 2
を
return 'Draw' if hands.uniq.size != 2 || %w[g, v, w].none?(hand)
に修正
puts janken('グーチョキパー', 5)
# => [["You", "グーチョキパー"], ["PC1", "g"], ["PC2", "w"], ["PC3", "v"], ["PC4", "g"], ["PC5", "
v"]]
Draw
「・グー、チョキ、パー以外が入力されたら、あいこ扱い」を見落としていたので
return 'Draw' if hands.uniq.size != 2
を
return 'Draw' if hands.uniq.size != 2 || %w[g, v, w].none?(hand)
に修正
puts janken('グーチョキパー', 5)
# => [["You", "グーチョキパー"], ["PC1", "g"], ["PC2", "w"], ["PC3", "v"], ["PC4", "g"], ["PC5", "
v"]]
Draw
683デフォルトの名無しさん
2018/11/24(土) 12:16:11.70ID:1C+vWWG1684デフォルトの名無しさん
2018/11/24(土) 12:26:57.03ID:hG+y0dS8 >>679
> ・グー=g、チョキ=v、パー=wとする。
グー=g、チョキ=c、パー=pか
グー=m、チョキ=v、パー=wか
どっちかに統一してほしい。
グー=g、チョキ=v、パー=wだとgが表音イニシャル、v, wが象形と統一性がない。
気になってご飯が喉を通らなくてプログラミングどころじゃない…
> ・グー=g、チョキ=v、パー=wとする。
グー=g、チョキ=c、パー=pか
グー=m、チョキ=v、パー=wか
どっちかに統一してほしい。
グー=g、チョキ=v、パー=wだとgが表音イニシャル、v, wが象形と統一性がない。
気になってご飯が喉を通らなくてプログラミングどころじゃない…
685デフォルトの名無しさん
2018/11/24(土) 13:02:40.59ID:1C+vWWG1 gも象形のつもりだったんだが。。。
686デフォルトの名無しさん
2018/11/24(土) 14:02:53.32ID:S/Hnk7Kr >>683 Ruby
def input(message, cond); begin; puts message; end while cond.call; end
def janken
hand_type = %w[g v w]
input('Input the number of opponents.', proc{gets.to_i < 1})
opp_number, hand, hands = $_.to_i
loop do
input('Input your hand.', proc{gets; false})
hand = hand_type.index($_.chomp!)
hands = opp_number.times.map{rand(3)}.unshift(hand)
p hands.map.with_index{|h, i| i == 0 ? ['You', $_] : ["PC#{i}", hand_type[h]]}
hand && hands.uniq.size == 2 ? break : puts('Draw')
end
puts %w[You\ Win! You\ Lose.][3 * hand / hands.uniq.sum / 2]
end
janken
# => Input the number of opponents.
1
Input your hand.
choki
[["You", "choki"], ["PC1", "g"]]
Draw
Input your hand.
w
[["You", "w"], ["PC1", "v"]]
You Lose.
def input(message, cond); begin; puts message; end while cond.call; end
def janken
hand_type = %w[g v w]
input('Input the number of opponents.', proc{gets.to_i < 1})
opp_number, hand, hands = $_.to_i
loop do
input('Input your hand.', proc{gets; false})
hand = hand_type.index($_.chomp!)
hands = opp_number.times.map{rand(3)}.unshift(hand)
p hands.map.with_index{|h, i| i == 0 ? ['You', $_] : ["PC#{i}", hand_type[h]]}
hand && hands.uniq.size == 2 ? break : puts('Draw')
end
puts %w[You\ Win! You\ Lose.][3 * hand / hands.uniq.sum / 2]
end
janken
# => Input the number of opponents.
1
Input your hand.
choki
[["You", "choki"], ["PC1", "g"]]
Draw
Input your hand.
w
[["You", "w"], ["PC1", "v"]]
You Lose.
687デフォルトの名無しさん
2018/11/24(土) 14:57:54.21ID:Q9o1GKtC >>684
まずは瞑想でもして心を落ち着けると良い。
まずは瞑想でもして心を落ち着けると良い。
688679
2018/11/24(土) 15:20:34.57ID:1C+vWWG1 >>679
一応、自分自身でも投稿。
予想通り分岐使わないバージョン出て来た。
自分も挑戦してみようかな。
Haskell(リストに勝ち負け確定パターン(含まれてるかでグループパターン割り出し)があるか判別して、先頭要素(必ずユーザー)がパターンと同じか判定)
https://ideone.com/9EmrYI
Cとか死ねたし。(全体の勝ちグループ(各手をカウントしてグループパターン割り出し)の手を確定後、勝ちグループと同じ手に対応した文字を入力していたか判定)
https://ideone.com/AmfTOy
(能力不足の自分はあえてでは無いが)あえて条件分岐バージョンにすると言語や個人の個性出そう。
(CとHaskellでグループ分けや自分が勝ちグループ側かの判定が違うアルゴリズムになった)
その場合、アルゴリズムの説明付きだと面白そう。
一応、自分自身でも投稿。
予想通り分岐使わないバージョン出て来た。
自分も挑戦してみようかな。
Haskell(リストに勝ち負け確定パターン(含まれてるかでグループパターン割り出し)があるか判別して、先頭要素(必ずユーザー)がパターンと同じか判定)
https://ideone.com/9EmrYI
Cとか死ねたし。(全体の勝ちグループ(各手をカウントしてグループパターン割り出し)の手を確定後、勝ちグループと同じ手に対応した文字を入力していたか判定)
https://ideone.com/AmfTOy
(能力不足の自分はあえてでは無いが)あえて条件分岐バージョンにすると言語や個人の個性出そう。
(CとHaskellでグループ分けや自分が勝ちグループ側かの判定が違うアルゴリズムになった)
その場合、アルゴリズムの説明付きだと面白そう。
689デフォルトの名無しさん
2018/11/24(土) 16:39:00.82ID:ZWAqZgZk690デフォルトの名無しさん
2018/11/24(土) 16:56:21.89ID:S/Hnk7Kr >>689
グーチョキパー以外をプレイヤーが出したときおかしな挙動しない?
グーチョキパー以外をプレイヤーが出したときおかしな挙動しない?
691デフォルトの名無しさん
2018/11/24(土) 17:14:41.52ID:ZWAqZgZk692デフォルトの名無しさん
2018/11/24(土) 22:52:47.96ID:5TC6Hle/ お題
順列を求めるのにシャッフルでデータをたくさん用意して
重複データを取り除くことで求めている人がいた
順列の数の何倍位のデータを用意すればいいか調べる
順列を求めるのにシャッフルでデータをたくさん用意して
重複データを取り除くことで求めている人がいた
順列の数の何倍位のデータを用意すればいいか調べる
693デフォルトの名無しさん
2018/11/24(土) 23:20:30.16ID:Vcpm1NYO 許容誤差と確率の問題じゃん
694デフォルトの名無しさん
2018/11/24(土) 23:23:27.73ID:7YEvwBu9 >>692
二度と来なくていい
二度と来なくていい
695デフォルトの名無しさん
2018/11/24(土) 23:37:47.52ID:Wfpvwubu >>679 PowerShell
function Janken {
$hands = @($args[0]) + (1..$args[1] | %{ Get-Random "g","v","w" })
("[" + ($hands | % {"{0}`",'$_')" -f $(if ($i++ -eq 0) {"(`"You"} else {",(`"PC" + ($i-1)}) }) + "]")
$groups = @($hands | Group-Object)
$win = @{ "g" = "v"; "v" = "w"; "w" = "g" }[$args[0]]
if ($groups.Count -ne 2 -or $win -eq $null) { return "Draw" }
if (($groups | ? {$_.Name -eq $win}).Count -gt 0) { return "You Win!!" }
return "You Lose!!"
}
PowerShell > Janken g 1
[("You",'g') ,("PC1",'v')]
You Win!!
PowerShell > Janken v 2
[("You",'v') ,("PC1",'v') ,("PC2",'g')]
You Lose!!
PowerShell > Janken w 3
[("You",'w') ,("PC1",'v') ,("PC2",'g') ,("PC3",'w')]
Draw
PowerShell > Janken a 1
[("You",'a') ,("PC1",'g')]
Draw
function Janken {
$hands = @($args[0]) + (1..$args[1] | %{ Get-Random "g","v","w" })
("[" + ($hands | % {"{0}`",'$_')" -f $(if ($i++ -eq 0) {"(`"You"} else {",(`"PC" + ($i-1)}) }) + "]")
$groups = @($hands | Group-Object)
$win = @{ "g" = "v"; "v" = "w"; "w" = "g" }[$args[0]]
if ($groups.Count -ne 2 -or $win -eq $null) { return "Draw" }
if (($groups | ? {$_.Name -eq $win}).Count -gt 0) { return "You Win!!" }
return "You Lose!!"
}
PowerShell > Janken g 1
[("You",'g') ,("PC1",'v')]
You Win!!
PowerShell > Janken v 2
[("You",'v') ,("PC1",'v') ,("PC2",'g')]
You Lose!!
PowerShell > Janken w 3
[("You",'w') ,("PC1",'v') ,("PC2",'g') ,("PC3",'w')]
Draw
PowerShell > Janken a 1
[("You",'a') ,("PC1",'g')]
Draw
697デフォルトの名無しさん
2018/11/25(日) 06:18:56.85ID:k7/W79Is >>679
Kotlin
https://paiza.io/projects/3zt5CUPdhrTFhXx2z7ayvw
入力は1行単位で最初の手が自分、スペース区切りでPCの手になる。
グー、チョキ、パーと元の文字列の対応は以下に対応。
グー: "g", "G", "グー", "ぐー"
チョキ: "v", "V", "c", "C", "チョキ", "ちょき"
パー: "w", "W", "p", "P", "パー", "ぱー"
勝敗の判定は「勝」、「負」、「相子」で出る。
Kotlin
https://paiza.io/projects/3zt5CUPdhrTFhXx2z7ayvw
入力は1行単位で最初の手が自分、スペース区切りでPCの手になる。
グー、チョキ、パーと元の文字列の対応は以下に対応。
グー: "g", "G", "グー", "ぐー"
チョキ: "v", "V", "c", "C", "チョキ", "ちょき"
パー: "w", "W", "p", "P", "パー", "ぱー"
勝敗の判定は「勝」、「負」、「相子」で出る。
698679
2018/11/25(日) 07:47:50.59ID:ae+bi37x699デフォルトの名無しさん
2018/11/25(日) 11:54:57.77ID:qcobBjeQ お題
標準運指(http://taipingu.net/kotu02.html)によるタイピングを考える。
英小文字からなる文字列Sが与えられるので、Sを入力するのにかかる時間を求めなさい。
各文字の入力にかかる時間は以下の通りとする。
・1文字目
・ホームポジションから動かない -> 4
・ホームポジションから動く -> 5
・2文字目以降
・1つ前の文字と反対の手の指 -> 1
・1つ前の文字と同じ手の違う指 -> 2
・1つ前の文字と同じ手の同じ指 -> 3
(例)
aiueo => 9 (4+1+2+1+1)
odai => 9
pppp => 14
asdfjkl => 15
fjdksla => 10
標準運指(http://taipingu.net/kotu02.html)によるタイピングを考える。
英小文字からなる文字列Sが与えられるので、Sを入力するのにかかる時間を求めなさい。
各文字の入力にかかる時間は以下の通りとする。
・1文字目
・ホームポジションから動かない -> 4
・ホームポジションから動く -> 5
・2文字目以降
・1つ前の文字と反対の手の指 -> 1
・1つ前の文字と同じ手の違う指 -> 2
・1つ前の文字と同じ手の同じ指 -> 3
(例)
aiueo => 9 (4+1+2+1+1)
odai => 9
pppp => 14
asdfjkl => 15
fjdksla => 10
700デフォルトの名無しさん
2018/11/25(日) 12:38:51.26ID:YCGD2W4D >>699 Ruby
h = -> c {'qaz'[c] ? 1 : 'wsx'[c] ? 2 : 'edc'[c] ? 3 : 'rfvtgb'[c] ? 4 : 'yhnujm'[c] ? -4 : 'ik'[c] ? -3 : 'ol'[c] ? -2 : 'p'[c] ? -1 : raise('invalid key')}
f = -> str{(str[/\A[adfghjkls]/] ? 4 : 5) + str.each_char.map{|c| h[c]}.each_cons(2).map{|a, b| a * b < 0 ? 1 : a != b ? 2 : 3}.sum}
%w[aiueo odai pppp asdfjkl fjdksla].each{|s| puts '%s => %d' % [s, f[s]]}
# => aiueo => 9
odai => 9
pppp => 14
asdfjkl => 15
fjdksla => 10
h = -> c {'qaz'[c] ? 1 : 'wsx'[c] ? 2 : 'edc'[c] ? 3 : 'rfvtgb'[c] ? 4 : 'yhnujm'[c] ? -4 : 'ik'[c] ? -3 : 'ol'[c] ? -2 : 'p'[c] ? -1 : raise('invalid key')}
f = -> str{(str[/\A[adfghjkls]/] ? 4 : 5) + str.each_char.map{|c| h[c]}.each_cons(2).map{|a, b| a * b < 0 ? 1 : a != b ? 2 : 3}.sum}
%w[aiueo odai pppp asdfjkl fjdksla].each{|s| puts '%s => %d' % [s, f[s]]}
# => aiueo => 9
odai => 9
pppp => 14
asdfjkl => 15
fjdksla => 10
701デフォルトの名無しさん
2018/11/25(日) 13:38:17.14ID:k7/W79Is702デフォルトの名無しさん
2018/11/25(日) 16:23:23.79ID:rkqtyTFb お題:Brainfuckのインタプリタを実装せよ
仕様 https://ja.wikipedia.org/wiki/Brainfuck
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.
⇒ Hello World!
++++++++[>++++++++<-]>++.<++++++[>++++++++<-]>.<----[>++++<-]>-.++++++++.+++++.--------.+++++++++++++++.<----[>++++<-]>--.++++++++.
⇒ ?
仕様 https://ja.wikipedia.org/wiki/Brainfuck
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.
⇒ Hello World!
++++++++[>++++++++<-]>++.<++++++[>++++++++<-]>.<----[>++++<-]>-.++++++++.+++++.--------.+++++++++++++++.<----[>++++<-]>--.++++++++.
⇒ ?
703デフォルトの名無しさん
2018/11/25(日) 16:52:01.92ID:1Q36MCdG >>702 Ruby やっつけ
def parse_bra(code)
Hash.new.tap{|h|
while i = (code.index(/\[[^\[\]]*\]/))
h[i] = i + $&.size - 1; h[h[i]] = i; code = code.sub($&, ' ' * $&.size)
end
end
end
def step(stat)
case stat[:code][stat[:pos]]
when ?> then stat[:mar] = stat[:mar] == 9999 ? 0 : stat[:mar] + 1
when ?< then stat[:mar] = stat[:mar] == 0 ? 9999 : stat[:mar] - 1
when ?+ then stat[:mem][stat[:mar]] = stat[:mem][stat[:mar]] == 255 ? 0 : stat[:mem][stat[:mar]] + 1
when ?- then stat[:mem][stat[:mar]] = stat[:mem][stat[:mar]] == 0 ? 255 : stat[:mem][stat[:mar]] - 1
when ?. then putc stat[:mem][stat[:mar]]
when ?, then stat[:mem][stat[:mar]] = $stdin.getc&.ord.to_i
when ?[ then stat[:pos] = stat[:bra][stat[:pos]] if stat[:mem][stat[:mar]] == 0
when ?] then stat[:pos] = stat[:bra][stat[:pos]] if stat[:mem][stat[:mar]] != 0
end
end
def bf(code)
stat = {pos: 0, mar: 0, code: code, mem: Array.new(10000, 0), bra: parse_bra(code)}
(step(stat); stat[:pos] += 1) while stat[:pos] < code.size
end
bf('>+++++++++[<++++++++>-]/ 中略 /++++[<++++>-]<+.[-]++++++++++.')
# => Hello World!
bf('++++++++[>++++++++<-]>+/ 中略 /++++.<----[>++++<-]>--.++++++++.')
# => Brainfuck
def parse_bra(code)
Hash.new.tap{|h|
while i = (code.index(/\[[^\[\]]*\]/))
h[i] = i + $&.size - 1; h[h[i]] = i; code = code.sub($&, ' ' * $&.size)
end
end
end
def step(stat)
case stat[:code][stat[:pos]]
when ?> then stat[:mar] = stat[:mar] == 9999 ? 0 : stat[:mar] + 1
when ?< then stat[:mar] = stat[:mar] == 0 ? 9999 : stat[:mar] - 1
when ?+ then stat[:mem][stat[:mar]] = stat[:mem][stat[:mar]] == 255 ? 0 : stat[:mem][stat[:mar]] + 1
when ?- then stat[:mem][stat[:mar]] = stat[:mem][stat[:mar]] == 0 ? 255 : stat[:mem][stat[:mar]] - 1
when ?. then putc stat[:mem][stat[:mar]]
when ?, then stat[:mem][stat[:mar]] = $stdin.getc&.ord.to_i
when ?[ then stat[:pos] = stat[:bra][stat[:pos]] if stat[:mem][stat[:mar]] == 0
when ?] then stat[:pos] = stat[:bra][stat[:pos]] if stat[:mem][stat[:mar]] != 0
end
end
def bf(code)
stat = {pos: 0, mar: 0, code: code, mem: Array.new(10000, 0), bra: parse_bra(code)}
(step(stat); stat[:pos] += 1) while stat[:pos] < code.size
end
bf('>+++++++++[<++++++++>-]/ 中略 /++++[<++++>-]<+.[-]++++++++++.')
# => Hello World!
bf('++++++++[>++++++++<-]>+/ 中略 /++++.<----[>++++<-]>--.++++++++.')
# => Brainfuck
704デフォルトの名無しさん
2018/11/25(日) 19:29:25.63ID:Iiz4BNf0705デフォルトの名無しさん
2018/11/25(日) 21:08:13.52ID:FiKNHiMA706デフォルトの名無しさん
2018/11/25(日) 21:09:21.48ID:F5E3KDnq >>705
笑った
笑った
707デフォルトの名無しさん
2018/11/25(日) 23:28:07.03ID:DgoPPid/ >>660 Perl5 普通のloop版
use feature qw{current_sub say};
for (qw{321 910 909 0 11111 123456789}) {
$a = $_;
$s = 1;
@d= ();
do {
$d = int $a / 10*$s;
$m = $a % (10*$s);
unshift @d, $m*$s;
$s *= -1;
$a = ($a - $m)/10;
} while $a;
say "$_ $d => ", @d;
}
>>660 Perl5 無名関数の末尾再帰版
use feature qw{say};
for (qw{321 910 909 0 11111 123456789}) {
$s = 1;
say "$_ $d => ", sub {
$a = shift;
$d = int $a / 10*$s;
$m = $a % (10*$s);
my $ms = $m*$s;
$s *= -1;
$a = ($a - $m)/10;
(($a ? __SUB__->($a) : ()), $ms);
}->($_);
}
use feature qw{current_sub say};
for (qw{321 910 909 0 11111 123456789}) {
$a = $_;
$s = 1;
@d= ();
do {
$d = int $a / 10*$s;
$m = $a % (10*$s);
unshift @d, $m*$s;
$s *= -1;
$a = ($a - $m)/10;
} while $a;
say "$_ $d => ", @d;
}
>>660 Perl5 無名関数の末尾再帰版
use feature qw{say};
for (qw{321 910 909 0 11111 123456789}) {
$s = 1;
say "$_ $d => ", sub {
$a = shift;
$d = int $a / 10*$s;
$m = $a % (10*$s);
my $ms = $m*$s;
$s *= -1;
$a = ($a - $m)/10;
(($a ? __SUB__->($a) : ()), $ms);
}->($_);
}
708デフォルトの名無しさん
2018/11/25(日) 23:30:57.42ID:DgoPPid/ >>707
ゴメン、普通のloop版の
say "$_ $d => ", @d;
は不要なdebug writeも出力するので
say "$_ => ", @d;
に訂正
結果はいずれも
$ perl 12_660.pl
321 => 481
910 => 19090
909 => 909
0 => 0
11111 => 29291
123456789 => 284664829
ゴメン、普通のloop版の
say "$_ $d => ", @d;
は不要なdebug writeも出力するので
say "$_ => ", @d;
に訂正
結果はいずれも
$ perl 12_660.pl
321 => 481
910 => 19090
909 => 909
0 => 0
11111 => 29291
123456789 => 284664829
709デフォルトの名無しさん
2018/11/25(日) 23:34:40.02ID:DgoPPid/710697
2018/11/26(月) 02:29:30.61ID:jdmxn8AZ >>679>>698
HTML + JavaScript
https://codepen.io/anon/pen/OaERvj
即実行できた方がいいかなと思ってブラウザで動く JavaScript にしてみた。
PC側は10台まで台数入力する。
表示は「グー」、「チョキ」、「パー」になっている。
判定は方法ほ Kotlin のやつとほとんど同じ。
但し勝敗や相子に関係なく再挑戦ボタンが出る。
HTML + JavaScript
https://codepen.io/anon/pen/OaERvj
即実行できた方がいいかなと思ってブラウザで動く JavaScript にしてみた。
PC側は10台まで台数入力する。
表示は「グー」、「チョキ」、「パー」になっている。
判定は方法ほ Kotlin のやつとほとんど同じ。
但し勝敗や相子に関係なく再挑戦ボタンが出る。
711デフォルトの名無しさん
2018/11/28(水) 01:28:37.70ID:he8qnrZH712711
2018/11/28(水) 23:15:07.63ID:he8qnrZH >>702 c
https://ideone.com/Plh1vx
・mandelbrotが4.24s
・セル配列をコンパクト化
・一部のforとswitchをgotoで置き換え
・データポインタの範囲チェックは廃止
・']'のとき無条件に'['へ戻ってたのを廃止
https://ideone.com/Plh1vx
・mandelbrotが4.24s
・セル配列をコンパクト化
・一部のforとswitchをgotoで置き換え
・データポインタの範囲チェックは廃止
・']'のとき無条件に'['へ戻ってたのを廃止
713デフォルトの名無しさん
2018/11/28(水) 23:53:16.47ID:fj/EN88U これで。以前からやろうとしてできてない。AI簡単そうだが。
3x3盤タイルゲーム for Windows ver2.00 14/7/5 更新
対戦するたびに学習して次第に強くなる「最善手探索+対戦学習型知能ゲーム」 <入門版>
4x4盤タイルゲーム for Windows ver2.00 14/7/5 更新
対戦するたびに学習して次第に強くなる「最善手探索+対戦学習型知能ゲーム」 <本格版>
http://www2u.biglobe.ne.jp/~shunbook/omocha/index.htm
3x3盤タイルゲーム for Windows ver2.00 14/7/5 更新
対戦するたびに学習して次第に強くなる「最善手探索+対戦学習型知能ゲーム」 <入門版>
4x4盤タイルゲーム for Windows ver2.00 14/7/5 更新
対戦するたびに学習して次第に強くなる「最善手探索+対戦学習型知能ゲーム」 <本格版>
http://www2u.biglobe.ne.jp/~shunbook/omocha/index.htm
714デフォルトの名無しさん
2018/11/29(木) 11:20:14.11ID:jwCbT4Qs 盤の状態は4×4のやつで3^16=43046721通りだから後退解析で全状態の最善手が簡単に解ける
715デフォルトの名無しさん
2018/11/29(木) 19:56:01.31ID:Hd6SZyXm >>712
その "&&label" って初めてみたんだけどgcc拡張なんだな
その "&&label" って初めてみたんだけどgcc拡張なんだな
716デフォルトの名無しさん
2018/11/29(木) 20:53:52.25ID:lIzTCHsu >>715
これか。こんなのあったとは知らなかった。
http://nnabeyang.hatenablog.com/entry/2012/12/05/160312
しかしあまり利用する必要なさそうな予感。
これか。こんなのあったとは知らなかった。
http://nnabeyang.hatenablog.com/entry/2012/12/05/160312
しかしあまり利用する必要なさそうな予感。
717711
2018/11/29(木) 23:18:59.74ID:dyCCyrAH >>702 c
https://ideone.com/ddpLYQ
・ mandelbrotが4.24s→3.42s
・いくつかの単純なループを自前の命令に置き換え
>>715-716
まさかこれ使う日が来るとはね( ^ω^)
https://ideone.com/ddpLYQ
・ mandelbrotが4.24s→3.42s
・いくつかの単純なループを自前の命令に置き換え
>>715-716
まさかこれ使う日が来るとはね( ^ω^)
718デフォルトの名無しさん
2018/11/30(金) 16:33:00.37ID:M3yAddAk さすがC言語
奥が深いな
奥が深いな
719デフォルトの名無しさん
2018/11/30(金) 18:55:20.12ID:eqr4XxJg 儲かるお題を書いてください。
720デフォルトの名無しさん
2018/11/30(金) 19:56:50.93ID:vThfWoZE お題: C言語のコメント/*〜*/, //〜 を除去するプログラムを実装せよ
721711
2018/11/30(金) 22:52:06.95ID:j+r1UJtS722デフォルトの名無しさん
2018/11/30(金) 22:53:31.37ID:cIO0a97u >>720
命令すんなカス
命令すんなカス
723デフォルトの名無しさん
2018/11/30(金) 23:05:45.19ID:iwzbC/nf >>721
ここまで最適化するとはすごいな
今VCに移植してやってみてる
VCはラベルのアドレスは取れないのでcase文内で処理してる
でも文字がダラダラと表示されるのが嫌なので、putchar()の所を
一度バッファに溜めておいて最後にputs()で一気に出力するようにした
ここまで最適化するとはすごいな
今VCに移植してやってみてる
VCはラベルのアドレスは取れないのでcase文内で処理してる
でも文字がダラダラと表示されるのが嫌なので、putchar()の所を
一度バッファに溜めておいて最後にputs()で一気に出力するようにした
>>720
やったことがある気がしたのですが、もうすっかり忘れてしまいました…
やったことがある気がしたのですが、もうすっかり忘れてしまいました…
725デフォルトの名無しさん
2018/11/30(金) 23:09:48.33ID:iwzbC/nf >>712のを移植するとこうなる
他のも同様だと思う
Random1.h というのは自前のストップウォッチクラスを使うためだけなので、
std::chronoを使って適当に自作すれば良い
https://ideone.com/Vf0qIj
他のも同様だと思う
Random1.h というのは自前のストップウォッチクラスを使うためだけなので、
std::chronoを使って適当に自作すれば良い
https://ideone.com/Vf0qIj
726デフォルトの名無しさん
2018/11/30(金) 23:16:05.51ID:TjeK6E2T お題: 入力にこのスレのhtmlが与えられるので数字だけ,区切りで出力しなさい。
出力例
2018,11,30,...
出力例
2018,11,30,...
727デフォルトの名無しさん
2018/11/30(金) 23:54:45.63ID:8gAcKqbf どれだけの数字の種類に対応するのかで個性が出るな
728デフォルトの名無しさん
2018/12/01(土) 00:17:45.63ID:XKE5KJf3729デフォルトの名無しさん
2018/12/01(土) 01:26:07.16ID:3EVAE812 >>720
Perl
https://paiza.io/projects/Q_MF7JmVJMMjF1aqffgfaw
Perl だと簡単だ。
但し /* /* */ */ みたいな二重のやつには対応していない。最初の /* から次に出た */ を削除して */ が残る。
(この辺は本物のCプリプロセッサでも同じかな?)
Perl
https://paiza.io/projects/Q_MF7JmVJMMjF1aqffgfaw
Perl だと簡単だ。
但し /* /* */ */ みたいな二重のやつには対応していない。最初の /* から次に出た */ を削除して */ が残る。
(この辺は本物のCプリプロセッサでも同じかな?)
730デフォルトの名無しさん
2018/12/01(土) 01:45:09.70ID:YAQo6Dqr >>726 Ruby
require 'open-uri'
thread = 'https://mevius.5ch.net/test/read.cgi/tech/1538096947'
puts open(thread).read.scan(/>([^<]+)/).flat_map{|(s)| s.scan(/\d+/)}.join(?,)
# =>
12,12,729,314,1,100,50,1,2018,09,28,10,09,07,13,1,2,1,10,# 略
require 'open-uri'
thread = 'https://mevius.5ch.net/test/read.cgi/tech/1538096947'
puts open(thread).read.scan(/>([^<]+)/).flat_map{|(s)| s.scan(/\d+/)}.join(?,)
# =>
12,12,729,314,1,100,50,1,2018,09,28,10,09,07,13,1,2,1,10,# 略
731デフォルトの名無しさん
2018/12/01(土) 01:53:10.02ID:k1RHlnBk >>729
"/* hoge */" => ""
"/* hoge */" => ""
733デフォルトの名無しさん
2018/12/01(土) 03:00:24.20ID:3EVAE812734デフォルトの名無しさん
2018/12/01(土) 03:09:09.09ID:3EVAE812 >>731
今閃いたので修正した。(URLは同じ)
今閃いたので修正した。(URLは同じ)
735デフォルトの名無しさん
2018/12/01(土) 03:22:24.06ID:Zs5zJNI/ >>720 Ruby
src = $<.read
i = 0
loop do
break if i >= src.size
case src[i]
when ?" then i += src[i..-1][/(?:".*[^\\]|")(?:\\\\)*"/].size
when ?' then i += src[i..-1][/(?:'.*[^\\]|')(?:\\\\)*'/].size
when ?/ then src.sub!(/(?<=.{#{i}})(?:\/\/[^\n]*|\/\*.*?\*\/)/m, ''); i += 1
else i += 1
end
end
-*- input -*-
hoge(); // fuga
hoge('"'); // fuga ");
hoge("// \"fuga\"\\");
hoge("/* fuga */"); /* fuga
fuga /* "fuga" // */; hoge
-*- output -*-
hoge();
hoge('"');
hoge("// "fuga"\\");
hoge("/* fuga */"); ; hoge
src = $<.read
i = 0
loop do
break if i >= src.size
case src[i]
when ?" then i += src[i..-1][/(?:".*[^\\]|")(?:\\\\)*"/].size
when ?' then i += src[i..-1][/(?:'.*[^\\]|')(?:\\\\)*'/].size
when ?/ then src.sub!(/(?<=.{#{i}})(?:\/\/[^\n]*|\/\*.*?\*\/)/m, ''); i += 1
else i += 1
end
end
-*- input -*-
hoge(); // fuga
hoge('"'); // fuga ");
hoge("// \"fuga\"\\");
hoge("/* fuga */"); /* fuga
fuga /* "fuga" // */; hoge
-*- output -*-
hoge();
hoge('"');
hoge("// "fuga"\\");
hoge("/* fuga */"); ; hoge
736デフォルトの名無しさん
2018/12/01(土) 03:24:23.46ID:3EVAE812 >>720
Cでも作った。
https://paiza.io/projects/2RgQrlBLrzJe9MQp9weQmQ
これは1文字づつ読んでモード切り替えて出力したりしなかったりする方式。
文字列リテラルにも対応。
Cでも作った。
https://paiza.io/projects/2RgQrlBLrzJe9MQp9weQmQ
これは1文字づつ読んでモード切り替えて出力したりしなかったりする方式。
文字列リテラルにも対応。
737デフォルトの名無しさん
2018/12/01(土) 03:40:27.80ID:mIATMgqT >>734
'"', /* hoge */, "fuga" => '"', /* hoge */, "fuga"
'"', /* hoge */, "fuga" => '"', /* hoge */, "fuga"
738デフォルトの名無しさん
2018/12/01(土) 03:45:42.76ID:mIATMgqT >>734
"// hoge" => "
"// hoge" => "
739デフォルトの名無しさん
2018/12/01(土) 04:05:45.76ID:3EVAE812 >>737>>738
あ、それか。それは明日考えよう。
あ、それか。それは明日考えよう。
740デフォルトの名無しさん
2018/12/01(土) 04:06:53.29ID:3EVAE812 C言語の方もシングルクォート考慮してないから似たようなものだな。
741デフォルトの名無しさん
2018/12/01(土) 05:34:42.40ID:qLkjgui5 >>735 訂正
src = $<.read
i = 0
loop do
break if i >= src.size
case src[i]
when ?" then i += src[i..-1][/\A"(?:.*?[^\\])?(?:\\\\)*"/].size; next
when ?' then i += src[i..-1][/\A'(?:.*?[^\\])?(?:\\\\)*'/].size; next
when ?/ then src.sub!(/(?<=\A.{#{i}})(?:\/\/[^\n]*|\/\*.*?\*\/)/m, '')
end
i += 1
end
puts src
-*- input -*-
hoge(); // fuga
hoge('"'); // fuga ");
hoge("// \"fuga\"\\", /* fuga */ *"fuga");
hoge("/* fuga */"); /* fuga
fuga /* "fuga" // */; hoge
-*- output -*-
hoge();
hoge('"');
hoge("// \"fuga\"\\", *"fuga");
hoge("/* fuga */"); ; hoge
src = $<.read
i = 0
loop do
break if i >= src.size
case src[i]
when ?" then i += src[i..-1][/\A"(?:.*?[^\\])?(?:\\\\)*"/].size; next
when ?' then i += src[i..-1][/\A'(?:.*?[^\\])?(?:\\\\)*'/].size; next
when ?/ then src.sub!(/(?<=\A.{#{i}})(?:\/\/[^\n]*|\/\*.*?\*\/)/m, '')
end
i += 1
end
puts src
-*- input -*-
hoge(); // fuga
hoge('"'); // fuga ");
hoge("// \"fuga\"\\", /* fuga */ *"fuga");
hoge("/* fuga */"); /* fuga
fuga /* "fuga" // */; hoge
-*- output -*-
hoge();
hoge('"');
hoge("// \"fuga\"\\", *"fuga");
hoge("/* fuga */"); ; hoge
742デフォルトの名無しさん
2018/12/01(土) 07:52:53.53ID:U3mK8vlP743デフォルトの名無しさん
2018/12/01(土) 11:03:33.46ID:XKE5KJf3 >>742
生きづらそう
生きづらそう
744デフォルトの名無しさん
2018/12/01(土) 11:10:29.72ID:50ygxsN0745デフォルトの名無しさん
2018/12/01(土) 11:16:56.49ID:50ygxsN0 >>744
ゴメン再帰マッチは(?R)や(?1)だた
時間あればnest対応版書いてみたいけど
多分ないや…
こういうのは再帰降下パーサParse::RecDescentやPerl6のRule使うと楽に書ける
ゴメン再帰マッチは(?R)や(?1)だた
時間あればnest対応版書いてみたいけど
多分ないや…
こういうのは再帰降下パーサParse::RecDescentやPerl6のRule使うと楽に書ける
746デフォルトの名無しさん
2018/12/01(土) 12:39:50.92ID:U3mK8vlP747デフォルトの名無しさん
2018/12/01(土) 12:41:56.31ID:1eGLRG7/ いつもの単芝君やないか
この板に粘着して荒らしまわってる奴やで
意思疎通は不可能なのでNGするなりスルーするなりしてくれ
この板に粘着して荒らしまわってる奴やで
意思疎通は不可能なのでNGするなりスルーするなりしてくれ
748デフォルトの名無しさん
2018/12/01(土) 15:19:58.00ID:3EVAE812749デフォルトの名無しさん
2018/12/01(土) 17:02:07.43ID:3EVAE812 >>736も改造終了(URLは同じ)。
750デフォルトの名無しさん
2018/12/01(土) 17:34:49.88ID:XO3Kyvz4 >>706 F#
https://ideone.com/IUPK21
mandelbrotが2.86s
https://postd.cc/adventures-in-jit-compilation-part-1-an-interpreter/ を参考にした
https://ideone.com/IUPK21
mandelbrotが2.86s
https://postd.cc/adventures-in-jit-compilation-part-1-an-interpreter/ を参考にした
751デフォルトの名無しさん
2018/12/01(土) 17:37:04.95ID:XO3Kyvz4 >>750 はインタプリタでないので無視してください
752デフォルトの名無しさん
2018/12/02(日) 00:35:34.00ID:twRH93OM >>702
Kotlin
https://paiza.io/projects/MBp2uVW-Y0Kj2sRaZom3pA
1行1プログラムだが行が長くなると見辛いので行末に \ があったら次の行と連結している事にした。
Kotlin
https://paiza.io/projects/MBp2uVW-Y0Kj2sRaZom3pA
1行1プログラムだが行が長くなると見辛いので行末に \ があったら次の行と連結している事にした。
753711
2018/12/02(日) 16:02:26.97ID:aFBnTuDv >>702 c
https://ideone.com/6sLfPH
・ mandelbrotが4.24s→3.42s→3.24s→2.13s
・G: while (*dp) dp += ip->d; ip++; goto TOP; を追加
>>723
caseで分岐するほうが移植性あっていいよね( ^ω^)
https://ideone.com/6sLfPH
・ mandelbrotが4.24s→3.42s→3.24s→2.13s
・G: while (*dp) dp += ip->d; ip++; goto TOP; を追加
>>723
caseで分岐するほうが移植性あっていいよね( ^ω^)
754デフォルトの名無しさん
2018/12/02(日) 16:29:28.37ID:hHHhmr7T Python「・・・」
755デフォルトの名無しさん
2018/12/03(月) 22:04:03.50ID:cV13JBu4 [お題]
整数A,B(1<=A<B<=50万)と P(1<=P<=10)が順に与えられる。
A以上B以下の10進数の整数から異なる2つの整数を選ぶ。
その2つの整数を表現するのに使われている(各桁の)数字の種類が
ちょうどP種類である選び方は何通りできるか。
※ 先頭ゼロ詰禁止、実行時間一問1.5秒以内(ideone等で)
1) 8 11 2 --> 4
2) 10 1000 5 --> 207480
3) 44 44444 4 --> 33808313
4) 56785 113452 1 --> ?
5) 102345 480713 6 --> ?
6) 1 500000 7 --> 47440713600
例題1) の補足 "8 11 2" のとき
{8,9,10,11}から2整数を選ぶ。NCR(4,2)=6通りあるなかから
(8,9)(8,11)(9,11)(10,11) の4通りが答え。[]内を使用数字とすると、
例として、(8,11)は[8,1]の2種類, (10,11)は[1,0]の2種類からなる。
対象外は (8,10)は[8,1,0] (9,10)は[9,1,0]で ともに2種類ではない。
※解き方をパックて単純化した問題。
整数A,B(1<=A<B<=50万)と P(1<=P<=10)が順に与えられる。
A以上B以下の10進数の整数から異なる2つの整数を選ぶ。
その2つの整数を表現するのに使われている(各桁の)数字の種類が
ちょうどP種類である選び方は何通りできるか。
※ 先頭ゼロ詰禁止、実行時間一問1.5秒以内(ideone等で)
1) 8 11 2 --> 4
2) 10 1000 5 --> 207480
3) 44 44444 4 --> 33808313
4) 56785 113452 1 --> ?
5) 102345 480713 6 --> ?
6) 1 500000 7 --> 47440713600
例題1) の補足 "8 11 2" のとき
{8,9,10,11}から2整数を選ぶ。NCR(4,2)=6通りあるなかから
(8,9)(8,11)(9,11)(10,11) の4通りが答え。[]内を使用数字とすると、
例として、(8,11)は[8,1]の2種類, (10,11)は[1,0]の2種類からなる。
対象外は (8,10)は[8,1,0] (9,10)は[9,1,0]で ともに2種類ではない。
※解き方をパックて単純化した問題。
756デフォルトの名無しさん
2018/12/03(月) 23:49:23.73ID:CrTNh3lq 数え上げ系のお題はつまんない
757デフォルトの名無しさん
2018/12/04(火) 10:39:39.35ID:ZczbahAK パズルソルバーは制約・論理プログラミングが最適だね。
758デフォルトの名無しさん
2018/12/04(火) 13:11:47.75ID:vhrUEqnQ >>720 正規表現だけで書いてみた
regexp = /((?:([^"']*?)(?:\/\/[^\n]*|\/\*.*?\*\/))*)(("|').*?(?<!\\)(?:\\\\)*\4)?/m
puts <<~EOT.gsub(regexp, '\2\3')
hoge(); // fuga
hoge('"'); // fuga ");
hoge("// \\"fuga\\"\\\\", /* fuga */ *"fuga");
hoge("/* fuga */"); /* fuga
fuga /* "fuga" // */; hoge
EOT
# =>
hoge();
hoge('"');
hoge("// \"fuga\"\\", *"fuga");
hoge("/* fuga */"); ; hoge
regexp = /((?:([^"']*?)(?:\/\/[^\n]*|\/\*.*?\*\/))*)(("|').*?(?<!\\)(?:\\\\)*\4)?/m
puts <<~EOT.gsub(regexp, '\2\3')
hoge(); // fuga
hoge('"'); // fuga ");
hoge("// \\"fuga\\"\\\\", /* fuga */ *"fuga");
hoge("/* fuga */"); /* fuga
fuga /* "fuga" // */; hoge
EOT
# =>
hoge();
hoge('"');
hoge("// \"fuga\"\\", *"fuga");
hoge("/* fuga */"); ; hoge
759デフォルトの名無しさん
2018/12/04(火) 13:34:55.49ID:fo8RIf+e >>758 無駄な括弧があったので修正
regexp = /([^"']*?)(?:\/\/[^\n]*|\/\*.*?\*\/)?(("|').*?(?<!\\)(?:\\\\)*\3)?/m
puts src.gsub(regexp, '\1\2')
regexp = /([^"']*?)(?:\/\/[^\n]*|\/\*.*?\*\/)?(("|').*?(?<!\\)(?:\\\\)*\3)?/m
puts src.gsub(regexp, '\1\2')
760デフォルトの名無しさん
2018/12/04(火) 17:02:17.81ID:N7rAE58b761デフォルトの名無しさん
2018/12/04(火) 17:20:50.80ID:tkE9zz4k お題: テキストが入力されるのでそれがお題であれば1,お題でなければ0を出力せよ
762デフォルトの名無しさん
2018/12/04(火) 17:37:59.07ID:HMynH27O763デフォルトの名無しさん
2018/12/04(火) 17:43:36.31ID:evmq38l5 お題
C/C++言語のソースをHTMLに変換
・色分け(外部スタイルシートで色分け以外にも
サイズや種類など色々と細かく指定可能)表示
・コメント・クォート・マクロ定義部分・マクロ等に対応
・ローカル変数・グローバル変数・static関数・非static関数
ライブラリ変数/関数/マクロ(ヘッダ記載)・
ローカル型・グローバル型名の区別
入力:コマンドラインからファイル名(.c/.cpp)
出力:出力htm(l)ファイルとそれが参照するスタイルシート(.css)を
新規作成
C/C++言語のソースをHTMLに変換
・色分け(外部スタイルシートで色分け以外にも
サイズや種類など色々と細かく指定可能)表示
・コメント・クォート・マクロ定義部分・マクロ等に対応
・ローカル変数・グローバル変数・static関数・非static関数
ライブラリ変数/関数/マクロ(ヘッダ記載)・
ローカル型・グローバル型名の区別
入力:コマンドラインからファイル名(.c/.cpp)
出力:出力htm(l)ファイルとそれが参照するスタイルシート(.css)を
新規作成
764デフォルトの名無しさん
2018/12/04(火) 17:47:43.27ID:evmq38l5 あと、コードブロックや式の括弧のネストレベルに応じて
背景色を変えてほしい(要望)
コマンドラインからタブ=4,8とか指定できるようにもして欲しい
背景色を変えてほしい(要望)
コマンドラインからタブ=4,8とか指定できるようにもして欲しい
765デフォルトの名無しさん
2018/12/04(火) 17:58:45.10ID:0EeyK9d3 >>761
ruby -ne'p~/\Aお題\Z/?1:0'
ruby -ne'p~/\Aお題\Z/?1:0'
766デフォルトの名無しさん
2018/12/04(火) 18:05:08.94ID:HMynH27O 1. 好きなIDEのエディタで画面に表示。
2. PrtSc キーを押す。
3. ペイントを起動してペースト。
4. PNGファイルとして保存。
5. メモ帳を起動。
6. HTML を書き、imgで先の画像を表示するようにする。
7. 拡張子をhtmlにして保存。
8. ブラウザで表示。
9. 終了。
2. PrtSc キーを押す。
3. ペイントを起動してペースト。
4. PNGファイルとして保存。
5. メモ帳を起動。
6. HTML を書き、imgで先の画像を表示するようにする。
7. 拡張子をhtmlにして保存。
8. ブラウザで表示。
9. 終了。
767デフォルトの名無しさん
2018/12/04(火) 18:14:10.74ID:evmq38l5 型に応じて変数の色分け(スタイル変更)に対応できたら最高
忘れてたけど予約語の色分けは当然
ソースコードの構文エラー箇所以降は単色赤文字で表示
忘れてたけど予約語の色分けは当然
ソースコードの構文エラー箇所以降は単色赤文字で表示
768デフォルトの名無しさん
2018/12/04(火) 19:05:35.22ID:Ntdpy5BB >>761 PowerShell
[int]("お題" -eq $(Read-Host))
[int]("お題" -eq $(Read-Host))
769デフォルトの名無しさん
2018/12/05(水) 04:19:34.99ID:fABNAu0P770デフォルトの名無しさん
2018/12/05(水) 19:36:38.80ID:W3jESzak お題:ビュフォンの針をシミュレートして円周率の近似値を求めよ
771デフォルトの名無しさん
2018/12/05(水) 20:02:35.88ID:W3jESzak772デフォルトの名無しさん
2018/12/05(水) 23:06:27.91ID:dgv/Vo0c angleを計算するのに思いっきりπの値使ってるだろうし..www
773デフォルトの名無しさん
2018/12/05(水) 23:30:47.41ID:oCZO3Dfm wikipediaは日本語版だけその問題に言及して疑似コードも載ってるのな
>>772
そんなツッコミは初めてみました、うまいですね…
そんなツッコミは初めてみました、うまいですね…
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で [お断り★]
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★3 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★7 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★4
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★3
- 【悲報】吉兆ささやき女将(頭が真っ白になって)高市早苗「頭が真っ白になって・・・」 [616817505]
- 【朗報】高市経済ブレーン「経済対策の執行で来春には内需が大復活。3月頃利上げ可能に」 [237216734]
- 【高市早苗】習近平、本気で激おこ [115996789]
- 【高市有事】高市早苗が就任一ヶ月でやったこと一覧wwwwwwwwwwwwwww [603416639]
