プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
探検
プログラミングのお題スレ Part19
■ このスレッドは過去ログ倉庫に格納されています
2020/11/30(月) 00:04:05.21ID:TF2Czp0y
798デフォルトの名無しさん
2021/05/17(月) 21:53:58.96ID:GcVF7Ydc799デフォルトの名無しさん
2021/05/17(月) 21:55:49.51ID:rt013aFx >>798
条件が変われば別の問題だ
条件が変われば別の問題だ
800デフォルトの名無しさん
2021/05/17(月) 22:01:39.12ID:a/x20dO7 ぶっちゃけまだ題意を一意に解釈できていない
801デフォルトの名無しさん
2021/05/17(月) 22:05:12.05ID:rt013aFx 出題者の題意をくみ取るのがお題じゃないんだから
まともに出題出来ないやつは出題するな
と思う
まともに出題出来ないやつは出題するな
と思う
802デフォルトの名無しさん
2021/05/17(月) 22:11:18.99ID:GcVF7Ydc803デフォルトの名無しさん
2021/05/17(月) 22:29:29.08ID:rt013aFx 難しいとか簡単とかじゃなくて「正しく書け」
804デフォルトの名無しさん
2021/05/17(月) 22:35:29.50ID:GcVF7Ydc805デフォルトの名無しさん
2021/05/17(月) 22:43:35.04ID:rt013aFx806デフォルトの名無しさん
2021/05/17(月) 23:31:15.84ID:3M+J4Szq807デフォルトの名無しさん
2021/05/17(月) 23:37:44.87ID:GcVF7Ydc808デフォルトの名無しさん
2021/05/17(月) 23:39:29.93ID:GcVF7Ydc 当然そのつもりで取り組んでるでしょ?
809デフォルトの名無しさん
2021/05/17(月) 23:40:52.25ID:3M+J4Szq まぁでも出題者の言いたい事はまぁわからないでもない
この手の話は計算量の勉強してると時々出てくる
有名なのが巡回セールスマン問題で、本当の巡回セールスマンでは「セールスマンが最も効率よく巡回できる最小経路を算出するアルゴリズムを出せ」でコレにはNP時間かかるアルゴリズムしか知られていない
しかし「最小でなくても最小値に“そこそこ近い”経路ならP時間で求められるアルゴリズム」はある
多分出題者もこの問題について「最小値じゃないだろうけどまぁまぁ小さい答えを出してくれるアルゴリズム」はもってるんだろう
しかしコレをお題として他の人に出題するなら、その“そこそこ”が数学的に“どのくらい”なら合格とするのかを明示しないとお題にならない
この手の話は計算量の勉強してると時々出てくる
有名なのが巡回セールスマン問題で、本当の巡回セールスマンでは「セールスマンが最も効率よく巡回できる最小経路を算出するアルゴリズムを出せ」でコレにはNP時間かかるアルゴリズムしか知られていない
しかし「最小でなくても最小値に“そこそこ近い”経路ならP時間で求められるアルゴリズム」はある
多分出題者もこの問題について「最小値じゃないだろうけどまぁまぁ小さい答えを出してくれるアルゴリズム」はもってるんだろう
しかしコレをお題として他の人に出題するなら、その“そこそこ”が数学的に“どのくらい”なら合格とするのかを明示しないとお題にならない
810デフォルトの名無しさん
2021/05/17(月) 23:42:30.38ID:rt013aFx811デフォルトの名無しさん
2021/05/17(月) 23:44:38.94ID:GcVF7Ydc まあ簡単ではないとは思うが
問題文わかりづらかったかい?
問題文わかりづらかったかい?
812デフォルトの名無しさん
2021/05/17(月) 23:45:24.54ID:rt013aFx ちなみに部屋が6個以内ならわりと簡単
813デフォルトの名無しさん
2021/05/17(月) 23:47:56.94ID:rt013aFx >>811
ダメだこりゃ
ダメだこりゃ
814デフォルトの名無しさん
2021/05/17(月) 23:49:51.36ID:GcVF7Ydc815デフォルトの名無しさん
2021/05/17(月) 23:52:44.00ID:3M+J4Szq 例えば>>777の設定で「総マス数が2N+Tまでは合格」とかその手の縛りにしないと“最小”という縛りでは問題にならない
816デフォルトの名無しさん
2021/05/17(月) 23:59:37.40ID:rt013aFx817デフォルトの名無しさん
2021/05/18(火) 00:00:50.43ID:IEQY6Fk+ 今のままでは>>797で正解だ
(面積を追加すれば)
(面積を追加すれば)
818デフォルトの名無しさん
2021/05/18(火) 00:09:57.21ID:Wc7qNqFy819デフォルトの名無しさん
2021/05/18(火) 00:14:17.28ID:Wc7qNqFy 廊下一続き縛りでも、そこまで計算時間かからんと思うよ
巨大な室数と面積でも無ければね
もちろん、宇宙ホテルでは無い
巨大な室数と面積でも無ければね
もちろん、宇宙ホテルでは無い
820デフォルトの名無しさん
2021/05/18(火) 00:15:55.93ID:IEQY6Fk+ 何を言われてるのか全く分かってないようだ
821デフォルトの名無しさん
2021/05/18(火) 00:20:36.53ID:/GE6kPFW822デフォルトの名無しさん
2021/05/18(火) 00:31:54.78ID:U8UuOe0M お題:コイントス(数学板の問題の改変)
コインを3回連続で投げるとき
表表表,表表裏,表裏表,裏表表,表裏裏,裏表裏,裏裏表,裏裏裏の8通りが等確率で出る
2人で先手と後手を決めて、先手が上記の8通りの中から1つ選び、後手は残った7通りの中から1つ選ぶ
そして1枚のコインを連続して投げ続けて、先に選んだパターンが出た者の勝利とする
例えばAさんが 表表裏 を選び、Bさんが 表裏表 を選んだとして、
コインの結果が、裏裏裏表表裏 となったら 表表裏 が先に出たのでAさんの勝利
コインの結果が、裏裏裏表裏表 となったら 表裏表 が先に出たのでBさんの勝利
同様のルールで、コインn回(3≦n≦6)のパターンを2人で予想し合うとき、
先手の予想を表す文字列を入力として、後手の勝率が最大となる後手の予想を表す文字列を出力せよ
入力で与える文字列として、"表" "裏" の代わりに "0" "1" を使用して良い
※入力と出力の文字列は同じ長さとする
例1: 入力 = 0000 → 出力 = 1000
例2: 入力 = 111000 → 出力 = 111100
コインを3回連続で投げるとき
表表表,表表裏,表裏表,裏表表,表裏裏,裏表裏,裏裏表,裏裏裏の8通りが等確率で出る
2人で先手と後手を決めて、先手が上記の8通りの中から1つ選び、後手は残った7通りの中から1つ選ぶ
そして1枚のコインを連続して投げ続けて、先に選んだパターンが出た者の勝利とする
例えばAさんが 表表裏 を選び、Bさんが 表裏表 を選んだとして、
コインの結果が、裏裏裏表表裏 となったら 表表裏 が先に出たのでAさんの勝利
コインの結果が、裏裏裏表裏表 となったら 表裏表 が先に出たのでBさんの勝利
同様のルールで、コインn回(3≦n≦6)のパターンを2人で予想し合うとき、
先手の予想を表す文字列を入力として、後手の勝率が最大となる後手の予想を表す文字列を出力せよ
入力で与える文字列として、"表" "裏" の代わりに "0" "1" を使用して良い
※入力と出力の文字列は同じ長さとする
例1: 入力 = 0000 → 出力 = 1000
例2: 入力 = 111000 → 出力 = 111100
823デフォルトの名無しさん
2021/05/18(火) 00:32:11.62ID:IEQY6Fk+824デフォルトの名無しさん
2021/05/18(火) 00:35:55.95ID:Kzl4VF4s >>821
いや、総当たりなら出せるけど、それでは「巡回セールスマン問題の最小解を求めるアルゴリズムを求めよ」と言ってるのと同じで事実上総当たりしかない
もちろん総当たりアルゴリズム実装するのは難しい話てはないけど面白くもなんともない
しかし「最小値ではないが最小値にかなり近い値でよい」なら工夫のしようもある
例えばこの問題なら廊下の最小値は[N/2]だけどコレをどこかに真っ直ぐ引いてその両脇からN個の部屋をニョロニョロ伸ばして綺麗に長方形に治るようにする解なら多項式時間程度で求まる
しかしその方法で解が見つからなかったとしても、“あらゆる場合”を検討したわけではないから探索を次のステップに進めることができない
あくまで最小値を求めるならここで総当たりしてるダメな事を確認しないといけなくなる
しかし制限が最小値でなくて例えば2N+T以下くらいに緩ければこの方法で解を求める事が(多分)できる
まぁわかってもらえないようだからいいよ
総当たりプログラムなんて面白くもないのでROMします
いや、総当たりなら出せるけど、それでは「巡回セールスマン問題の最小解を求めるアルゴリズムを求めよ」と言ってるのと同じで事実上総当たりしかない
もちろん総当たりアルゴリズム実装するのは難しい話てはないけど面白くもなんともない
しかし「最小値ではないが最小値にかなり近い値でよい」なら工夫のしようもある
例えばこの問題なら廊下の最小値は[N/2]だけどコレをどこかに真っ直ぐ引いてその両脇からN個の部屋をニョロニョロ伸ばして綺麗に長方形に治るようにする解なら多項式時間程度で求まる
しかしその方法で解が見つからなかったとしても、“あらゆる場合”を検討したわけではないから探索を次のステップに進めることができない
あくまで最小値を求めるならここで総当たりしてるダメな事を確認しないといけなくなる
しかし制限が最小値でなくて例えば2N+T以下くらいに緩ければこの方法で解を求める事が(多分)できる
まぁわかってもらえないようだからいいよ
総当たりプログラムなんて面白くもないのでROMします
825デフォルトの名無しさん
2021/05/18(火) 00:36:09.32ID:IEQY6Fk+826デフォルトの名無しさん
2021/05/18(火) 00:38:53.07ID:IEQY6Fk+827デフォルトの名無しさん
2021/05/18(火) 00:41:20.76ID:/GE6kPFW828デフォルトの名無しさん
2021/05/18(火) 00:45:44.65ID:Kzl4VF4s >>826
そんなのできるわけないやん?
つまりこの問題かperfect NPか?と聞いてるのと同じで全く新しいPerfectNPを見つけた事になる
そんなの論文レベル
まぁ多項式時間では解けそうにないなぁってのはあくまで第1感で実際には解けるもしれない、しれないけど自分が無理くさいと思ってる問題でペイも発生しないお遊びにそこまで頭と時間使う気になれない
チャレンジして「やっぱダメじゃん」で終わった時虚しさしか残らん
そんなのできるわけないやん?
つまりこの問題かperfect NPか?と聞いてるのと同じで全く新しいPerfectNPを見つけた事になる
そんなの論文レベル
まぁ多項式時間では解けそうにないなぁってのはあくまで第1感で実際には解けるもしれない、しれないけど自分が無理くさいと思ってる問題でペイも発生しないお遊びにそこまで頭と時間使う気になれない
チャレンジして「やっぱダメじゃん」で終わった時虚しさしか残らん
829デフォルトの名無しさん
2021/05/18(火) 00:46:00.51ID:IEQY6Fk+830デフォルトの名無しさん
2021/05/18(火) 00:46:12.96ID:Wc7qNqFy >>823
廊下の一端は外周に接する、この条件は生き
部屋数は26まで、各面積は20坪までとする
(そこまで想定して無かったがw)
現実的な時間で解けない問題も過去には出てたからなあ
それでも猛者は取り組んでたよ
回転寿司の皿の問題とか
廊下の一端は外周に接する、この条件は生き
部屋数は26まで、各面積は20坪までとする
(そこまで想定して無かったがw)
現実的な時間で解けない問題も過去には出てたからなあ
それでも猛者は取り組んでたよ
回転寿司の皿の問題とか
831デフォルトの名無しさん
2021/05/18(火) 00:50:11.64ID:IEQY6Fk+832デフォルトの名無しさん
2021/05/18(火) 00:51:20.27ID:IEQY6Fk+833デフォルトの名無しさん
2021/05/18(火) 00:52:23.06ID:Wc7qNqFy834デフォルトの名無しさん
2021/05/18(火) 00:53:17.18ID:IEQY6Fk+ ありがと!
835デフォルトの名無しさん
2021/05/18(火) 00:58:38.60ID:Kzl4VF4s >>829
その問題数学板では答えしか出てない
計算式とかアルゴリズムは出てないので見に行っても大丈夫
いわゆる受験で出てくる“確率漸化式”の話(Homogeneous Morkov Chainと言います)の話が理解できてれば行列計算のルーチン実装すればできます
HMCの話知らなくても受験数学レベルでギリギリできなくもない
その問題数学板では答えしか出てない
計算式とかアルゴリズムは出てないので見に行っても大丈夫
いわゆる受験で出てくる“確率漸化式”の話(Homogeneous Morkov Chainと言います)の話が理解できてれば行列計算のルーチン実装すればできます
HMCの話知らなくても受験数学レベルでギリギリできなくもない
836デフォルトの名無しさん
2021/05/18(火) 01:35:07.81ID:IEQY6Fk+837デフォルトの名無しさん
2021/05/18(火) 01:44:00.93ID:ZvUkaH8s 回転寿司問題って何?
838デフォルトの名無しさん
2021/05/18(火) 01:57:24.03ID:Kzl4VF4s839デフォルトの名無しさん
2021/05/18(火) 02:43:15.99ID:9nwYg6rU >>837
これかな?18レス付いてた
お題:
回転寿司にやってきた私は、コンベア上のすべての寿司を食べて帰ることにしている
コンベアは1秒に1皿分の速度で流れ、目の前の皿を取るか取らないかを選ぶことができる
私は皿取ると同時に食べ始めるが、食べている間は次の皿を取ることができない
コンベア上の皿は、私が取る以外で勝手に追加されたり無くなったりしない
最初のコンベアの状態が次のような文字列で与えられる
"31_2"
数字(1文字)はその皿を食べ終えるのにかかる秒数を表し、_は皿がないことを表す
1文字目が私の目の前であり、1秒毎に左へ回転する
例えば、最初の皿を食べたとすると食べ終わった時の状態は以下である
"2_1_"
すべての寿司を食べ終わるまで最短何秒か求めよ
"12_3" > 6秒
"313__" > 8秒
"4_35_1264_23_434" > 60秒
"123456789123456789" > ?
これかな?18レス付いてた
お題:
回転寿司にやってきた私は、コンベア上のすべての寿司を食べて帰ることにしている
コンベアは1秒に1皿分の速度で流れ、目の前の皿を取るか取らないかを選ぶことができる
私は皿取ると同時に食べ始めるが、食べている間は次の皿を取ることができない
コンベア上の皿は、私が取る以外で勝手に追加されたり無くなったりしない
最初のコンベアの状態が次のような文字列で与えられる
"31_2"
数字(1文字)はその皿を食べ終えるのにかかる秒数を表し、_は皿がないことを表す
1文字目が私の目の前であり、1秒毎に左へ回転する
例えば、最初の皿を食べたとすると食べ終わった時の状態は以下である
"2_1_"
すべての寿司を食べ終わるまで最短何秒か求めよ
"12_3" > 6秒
"313__" > 8秒
"4_35_1264_23_434" > 60秒
"123456789123456789" > ?
840デフォルトの名無しさん
2021/05/18(火) 16:27:57.97ID:JXk1qQ+R 部屋の問題はダンジョンや迷路生成のアルゴリズムに似た物じゃない
パラメタが違うだけ
起点(玄関兼廊下)から幹道(廊下)があって支道(部屋)を生成し全体を枠内に収める
パラメタが違うだけ
起点(玄関兼廊下)から幹道(廊下)があって支道(部屋)を生成し全体を枠内に収める
841デフォルトの名無しさん
2021/05/18(火) 18:14:36.87ID:Tj0Ma2DE 対称性があるかどうかも分からない
巨大合成数を生成するのは掛け算するだけでかんたんだけど
それを二つに分けるのはちょっとばかし面倒でしょ
巨大合成数を生成するのは掛け算するだけでかんたんだけど
それを二つに分けるのはちょっとばかし面倒でしょ
842デフォルトの名無しさん
2021/05/18(火) 22:17:06.70ID:Tj0Ma2DE >>814で言ってた参考回答ってのはどれ?
843デフォルトの名無しさん
2021/05/18(火) 22:24:03.25ID:Wc7qNqFy >>842
まだ大きい数字のチェックが終わってないが、出しましょうか
まだ大きい数字のチェックが終わってないが、出しましょうか
844デフォルトの名無しさん
2021/05/18(火) 22:38:28.26ID:Wc7qNqFy845デフォルトの名無しさん
2021/05/18(火) 22:47:15.20ID:Wc7qNqFy 今気づいたけど、問題1のBが1個多いねw
846デフォルトの名無しさん
2021/05/18(火) 23:03:46.69ID:Tj0Ma2DE 500x500くらいになる手頃な大きさの例とか無いの?
847デフォルトの名無しさん
2021/05/19(水) 02:11:25.87ID:x3QVnoKT848デフォルトの名無しさん
2021/05/19(水) 08:35:28.49ID:l+JWTKLH >>844
最小面積じゃないので不正解
最小面積じゃないので不正解
849847
2021/05/19(水) 08:45:51.69ID:x3QVnoKT850デフォルトの名無しさん
2021/05/19(水) 10:50:08.45ID:4kVeu0Qb >>776
電話番号の最初が 010 や + ならば国際電話でそれ以外は全て国内電話だと思うが、本当にそれだけの判別で良いのか?
電話番号の最初が 010 や + ならば国際電話でそれ以外は全て国内電話だと思うが、本当にそれだけの判別で良いのか?
851デフォルトの名無しさん
2021/05/19(水) 11:00:46.78ID:4kVeu0Qb >>776
携帯の電話番号というのを見落としていた。で、何が携帯番号かの資料は何処にあるのか?
携帯の電話番号というのを見落としていた。で、何が携帯番号かの資料は何処にあるのか?
852蟻人間 ◆T6xkBnTXz7B0
2021/05/19(水) 14:13:04.56ID:9tgpiYrE853Mb
2021/05/19(水) 20:17:53.26ID:gE1os4Gp >>678
> 仮名を清音に変換してから比較する
うん、発想はいいが、いまひとつ。
清音のキーと「長音」「濁音」「拗音」とかのキーをそれぞれ生成して、
それをどうにかして整列キーを生成して文字列順の整列ルーチンに
喰わせる、ということを考えたら完璧。
> 仮名を清音に変換してから比較する
うん、発想はいいが、いまひとつ。
清音のキーと「長音」「濁音」「拗音」とかのキーをそれぞれ生成して、
それをどうにかして整列キーを生成して文字列順の整列ルーチンに
喰わせる、ということを考えたら完璧。
854デフォルトの名無しさん
2021/05/19(水) 20:18:23.09ID:J+haubFC855Mb
2021/05/19(水) 20:24:02.49ID:gE1os4Gp >>801
激しく同意する
激しく同意する
856デフォルトの名無しさん
2021/05/19(水) 21:05:39.99ID:gAtlXGbl お題: 複数ある改行を1つの改行にまとめる関数join_newlinesを作成せよ
s = 'abc\ndef\n\nghi\n\n\n'
s = join_newlines(s)
print(s)
# 'abc\ndef\nghi\n'
s = 'abc\ndef\n\nghi\n\n\n'
s = join_newlines(s)
print(s)
# 'abc\ndef\nghi\n'
857デフォルトの名無しさん
2021/05/19(水) 21:20:54.19ID:nXtJTB3X858デフォルトの名無しさん
2021/05/19(水) 21:27:22.52ID:Y3hdHfLU860デフォルトの名無しさん
2021/05/19(水) 21:47:06.50ID:hbAMoNi+861デフォルトの名無しさん
2021/05/19(水) 22:05:24.67ID:l28FZW1e >>856
haskell
import Data.List
joinNewLines = id
. concat
. map (\x -> if ( head x == '\n' ) then "\n" else x )
. group
haskell
import Data.List
joinNewLines = id
. concat
. map (\x -> if ( head x == '\n' ) then "\n" else x )
. group
862デフォルトの名無しさん
2021/05/20(木) 01:40:59.75ID:Qzbw4Py0863デフォルトの名無しさん
2021/05/20(木) 01:54:03.52ID:Qzbw4Py0864デフォルトの名無しさん
2021/05/20(木) 02:25:44.46ID:z4YPx3Ex865デフォルトの名無しさん
2021/05/20(木) 02:28:35.27ID:z4YPx3Ex866デフォルトの名無しさん
2021/05/22(土) 16:23:03.67ID:dLrgkRLZ867デフォルトの名無しさん
2021/05/23(日) 06:54:55.26ID:g5kAwhGI >>856 Python
def join_newlines(x): return "\n".join(x.split())
def join_newlines(x): return "\n".join(x.split())
868デフォルトの名無しさん
2021/05/23(日) 13:13:24.19ID:PEJa2qxX >>867
これで文字列の最初に空行があったり、文字列の最後に空行が続いたというような場合の復元ができるものですか?
これで文字列の最初に空行があったり、文字列の最後に空行が続いたというような場合の復元ができるものですか?
869デフォルトの名無しさん
2021/05/23(日) 13:46:27.14ID:P4UGjjTl まーた後だしジャンケンか
シビれるなぁ
シビれるなぁ
870デフォルトの名無しさん
2021/05/23(日) 20:08:36.95ID:jpQ65Iq9 後出しではないが、回答者もわかって書いてそう
871デフォルトの名無しさん
2021/05/23(日) 20:53:25.70ID:g5kAwhGI872デフォルトの名無しさん
2021/06/01(火) 23:19:09.17ID:FFj30Ig5 数学板より
お題 ヘビサイド関数で近似
問題は長いのでリンク先
分からない問題はここに書いてね 467
https://rio2016.5ch.net/test/read.cgi/math/1619884204/439-440
出力して欲しい3つの数値の例
上のリンクの下の440の方
【具体例1】
N = 3
l r s w
1 3 6 1
0 8 4 1
5 7 2 1
a=4, b1=6, b2=2 としたとき、F(a,b1,b2)=0 になり、これが最小値です。
a=3, b1=6, b2=2 としたとき、F(a,b1,b2)=4 になり、最小値ではありません。
a=4, b1=5, b2=3 としたとき、F(a,b1,b2)=4 になり、これも最小値ではありません。
【具体例2】
N = 4
l r s w
0 2 4 3
1 5 6 9
4 10 1 2
8 9 7 10
a=0.8, b1=1, b2=6 としたとき、F(a,b1,b2)=70 になります。
お題 ヘビサイド関数で近似
問題は長いのでリンク先
分からない問題はここに書いてね 467
https://rio2016.5ch.net/test/read.cgi/math/1619884204/439-440
出力して欲しい3つの数値の例
上のリンクの下の440の方
【具体例1】
N = 3
l r s w
1 3 6 1
0 8 4 1
5 7 2 1
a=4, b1=6, b2=2 としたとき、F(a,b1,b2)=0 になり、これが最小値です。
a=3, b1=6, b2=2 としたとき、F(a,b1,b2)=4 になり、最小値ではありません。
a=4, b1=5, b2=3 としたとき、F(a,b1,b2)=4 になり、これも最小値ではありません。
【具体例2】
N = 4
l r s w
0 2 4 3
1 5 6 9
4 10 1 2
8 9 7 10
a=0.8, b1=1, b2=6 としたとき、F(a,b1,b2)=70 になります。
873デフォルトの名無しさん
2021/06/02(水) 01:03:39.85ID:yNlOa9BD874デフォルトの名無しさん
2021/06/02(水) 02:49:47.48ID:idDWv9F6875デフォルトの名無しさん
2021/06/02(水) 04:58:10.59ID:yNlOa9BD そっか
残念
残念
876デフォルトの名無しさん
2021/06/02(水) 19:47:29.02ID:vod/9V8Y そんな打算で問題解いてるわけじゃあるまいし
877デフォルトの名無しさん
2021/06/04(金) 03:49:13.95ID:xd2yEhgg お題:teshimatta関数関数を作れ
入力は1文字以上を保証される
teshimatta("起きた")
> "起きてしまった"
teshimatta("やった")
> "やってしまった"
teshimatta("あ")
> "ってしまっあ"
teshimatta("古畑任三郎")
> "古畑任三ってしまっ郎"
入力は1文字以上を保証される
teshimatta("起きた")
> "起きてしまった"
teshimatta("やった")
> "やってしまった"
teshimatta("あ")
> "ってしまっあ"
teshimatta("古畑任三郎")
> "古畑任三ってしまっ郎"
878デフォルトの名無しさん
2021/06/04(金) 03:51:58.13ID:xd2yEhgg879デフォルトの名無しさん
2021/06/04(金) 07:01:44.23ID:2K7b+Cg2880デフォルトの名無しさん
2021/06/04(金) 18:25:22.58ID:gPAHqk4F >>877
haskell
teshimatta = reverse . concat . zipWith ( flip ( : ) ) ( "っまして" : repeat "" ) . reverse
haskell
teshimatta = reverse . concat . zipWith ( flip ( : ) ) ( "っまして" : repeat "" ) . reverse
881デフォルトの名無しさん
2021/06/05(土) 03:23:53.65ID:lg0pCfQ9 >>877
Kotlin 及び Kotlin script
以下は kotlinc コマンドで REPL で動かした時のコピペ。
>>> はプロンプト。1行目が関数定義。2行目から使用している。
>>> fun teshimatta(s: CharSequence): CharSequence = if (s.isNotEmpty()) StringBuilder(s).insert(s.lastIndex, "てしまっ") else s
>>> teshimatta("起きた")
res1: kotlin.CharSequence = 起きてしまった
>>> teshimatta("やった")
res2: kotlin.CharSequence = やってしまった
>>> teshimatta("あ")
res3: kotlin.CharSequence = てしまっあ
>>> teshimatta("古畑任三郎")
res4: kotlin.CharSequence = 古畑任三てしまっ郎
>>>
Kotlin 及び Kotlin script
以下は kotlinc コマンドで REPL で動かした時のコピペ。
>>> はプロンプト。1行目が関数定義。2行目から使用している。
>>> fun teshimatta(s: CharSequence): CharSequence = if (s.isNotEmpty()) StringBuilder(s).insert(s.lastIndex, "てしまっ") else s
>>> teshimatta("起きた")
res1: kotlin.CharSequence = 起きてしまった
>>> teshimatta("やった")
res2: kotlin.CharSequence = やってしまった
>>> teshimatta("あ")
res3: kotlin.CharSequence = てしまっあ
>>> teshimatta("古畑任三郎")
res4: kotlin.CharSequence = 古畑任三てしまっ郎
>>>
882デフォルトの名無しさん
2021/06/05(土) 04:51:26.61ID:oLy6snUx >>877 Python
def teshimatta(s): return s[:-1] + "てしまっ" + s[-1]
def teshimatta(s): return s[:-1] + "てしまっ" + s[-1]
883デフォルトの名無しさん
2021/06/06(日) 01:58:33.61ID:9Hxa2Z/w お題:一筆書き
0:床、1:穴、2:スタート地点
からなる数字列が与えられる。スタート地点から縦または横に1マスずつ移動し、すべての床を通過することとする。
穴や外周は通過できない。床は一度通過すると穴となり二度目は通過できない。
すべての床を通過できれば「OK」、できなければ「NG」と表示せよ。
【例1】OK
0000
0210
0000
0100
【例2】NG
0000
0200
0010
0000
【例3】OK
000000
210000
000100
000001
000000
【例4】NG
000000
210000
000100
000000
000001
0:床、1:穴、2:スタート地点
からなる数字列が与えられる。スタート地点から縦または横に1マスずつ移動し、すべての床を通過することとする。
穴や外周は通過できない。床は一度通過すると穴となり二度目は通過できない。
すべての床を通過できれば「OK」、できなければ「NG」と表示せよ。
【例1】OK
0000
0210
0000
0100
【例2】NG
0000
0200
0010
0000
【例3】OK
000000
210000
000100
000001
000000
【例4】NG
000000
210000
000100
000000
000001
884デフォルトの名無しさん
2021/06/06(日) 10:18:31.19ID:W7O34OA1 >>883
まさかこれ頂点の次数を数えるだけで終わるのか?
まさかこれ頂点の次数を数えるだけで終わるのか?
885デフォルトの名無しさん
2021/06/06(日) 10:29:23.85ID:bpZDov45 この場合の一筆書きってそういう意味じゃないと思う
886デフォルトの名無しさん
2021/06/06(日) 11:03:23.03ID:9mmqAG88 3次元使えばウルトラC
887蟻人間 ◆T6xkBnTXz7B0
2021/06/06(日) 14:50:36.40ID:FtjWvhxj オイラーグラフじゃなくてハミルトン路?
888デフォルトの名無しさん
2021/06/06(日) 15:33:11.95ID:xo01P796889デフォルトの名無しさん
2021/06/07(月) 01:47:29.10ID:25jhXmhQ890デフォルトの名無しさん
2021/06/07(月) 15:19:10.72ID:kUu6kkFg ハミルトン閉路問題とかいうやつか
891デフォルトの名無しさん
2021/06/09(水) 09:58:07.70ID:yucbsR+t NP完全らしいから事実上考えても無駄で総当たりで検索するしかなさそうやね
892デフォルトの名無しさん
2021/06/09(水) 11:44:53.31ID:7ehWzkTR >>883 Prolog
'お題:一筆書き
0:床、1:穴、2:スタート地点
からなる数字列が与えられる。スタート地点から縦または横に1マスずつ移動し、すべての床を通過することと
する。
穴や外周は通過できない。床は一度通過すると穴となり二度目は通過できない。
すべての床を通過できれば「OK」、できなければ「NG」と表示せよ。'(_行,_列,L) :- nth1(_スタート,_数字列,2), 選択(_行,_列,_スタート,_数字列).
選択(_行,_列,_n,_数字列) :- \+(member(0,_数字列)), write('OK\n'),!.
選択(_行,_列,_n,_数字列) :- 隣接(_行,_列,_n,_n_2), nth1(_n_2,_数字列,0), '_n番目を1に変える'(1,_n_2,_数字列,_数字列_2), 選択(_行,_列,_n_2,_数字列_2).
選択(_,_,_,_) :- write('NG\n').
'_n番目を1に変える'(_n,_n,[_|R],[1|R]) :- !.
'_n番目を1に変える'(M,_n,[_現在位置|R1],[_現在位置|R2]) :- succ(M,N), '_n番目を1に変える'(N,_n,R1,R2).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - 1, \+(0 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + 1, \+(1 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - _列, _隣接 > 0.
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + _列, _隣接 =< _行 * _列.
'お題:一筆書き
0:床、1:穴、2:スタート地点
からなる数字列が与えられる。スタート地点から縦または横に1マスずつ移動し、すべての床を通過することと
する。
穴や外周は通過できない。床は一度通過すると穴となり二度目は通過できない。
すべての床を通過できれば「OK」、できなければ「NG」と表示せよ。'(_行,_列,L) :- nth1(_スタート,_数字列,2), 選択(_行,_列,_スタート,_数字列).
選択(_行,_列,_n,_数字列) :- \+(member(0,_数字列)), write('OK\n'),!.
選択(_行,_列,_n,_数字列) :- 隣接(_行,_列,_n,_n_2), nth1(_n_2,_数字列,0), '_n番目を1に変える'(1,_n_2,_数字列,_数字列_2), 選択(_行,_列,_n_2,_数字列_2).
選択(_,_,_,_) :- write('NG\n').
'_n番目を1に変える'(_n,_n,[_|R],[1|R]) :- !.
'_n番目を1に変える'(M,_n,[_現在位置|R1],[_現在位置|R2]) :- succ(M,N), '_n番目を1に変える'(N,_n,R1,R2).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - 1, \+(0 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + 1, \+(1 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - _列, _隣接 > 0.
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + _列, _隣接 =< _行 * _列.
893デフォルトの名無しさん
2021/06/09(水) 11:48:43.27ID:7ehWzkTR >>884 すみません。一箇所間違えました。
Prolog
'お題:一筆書き
0:床、1:穴、2:スタート地点
からなる数字列が与えられる。スタート地点から縦または横に1マスずつ移動し、すべての床を通過することと
する。
穴や外周は通過できない。床は一度通過すると穴となり二度目は通過できない。
すべての床を通過できれば「OK」、できなければ「NG」と表示せよ。'(_行,_列,_数字列) :- nth1(_スタート,_数字列,2), 選択(_行,_列,_スタート,_数字列).
選択(_行,_列,_n,_数字列) :- \+(member(0,_数字列)), write('OK\n'),!.
選択(_行,_列,_n,_数字列) :- 隣接(_行,_列,_n,_n_2), nth1(_n_2,_数字列,0), '_n番目を1に変える'(1,_n_2,_数字列,_数字列_2), 選択(_行,_列,_n_2,_数字列_2).
選択(_,_,_,_) :- write('NG\n').
'_n番目を1に変える'(_n,_n,[_|R],[1|R]) :- !.
'_n番目を1に変える'(M,_n,[_現在位置|R1],[_現在位置|R2]) :- succ(M,N), '_n番目を1に変える'(N,_n,R1,R2).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - 1, \+(0 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + 1, \+(1 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - _列, _隣接 > 0.
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + _列, _隣接 =< _行 * _列.
Prolog
'お題:一筆書き
0:床、1:穴、2:スタート地点
からなる数字列が与えられる。スタート地点から縦または横に1マスずつ移動し、すべての床を通過することと
する。
穴や外周は通過できない。床は一度通過すると穴となり二度目は通過できない。
すべての床を通過できれば「OK」、できなければ「NG」と表示せよ。'(_行,_列,_数字列) :- nth1(_スタート,_数字列,2), 選択(_行,_列,_スタート,_数字列).
選択(_行,_列,_n,_数字列) :- \+(member(0,_数字列)), write('OK\n'),!.
選択(_行,_列,_n,_数字列) :- 隣接(_行,_列,_n,_n_2), nth1(_n_2,_数字列,0), '_n番目を1に変える'(1,_n_2,_数字列,_数字列_2), 選択(_行,_列,_n_2,_数字列_2).
選択(_,_,_,_) :- write('NG\n').
'_n番目を1に変える'(_n,_n,[_|R],[1|R]) :- !.
'_n番目を1に変える'(M,_n,[_現在位置|R1],[_現在位置|R2]) :- succ(M,N), '_n番目を1に変える'(N,_n,R1,R2).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - 1, \+(0 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + 1, \+(1 is _隣接 mod _列).
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 - _列, _隣接 > 0.
隣接(_行,_列,_現在位置,_隣接) :- _隣接 is _現在位置 + _列, _隣接 =< _行 * _列.
894デフォルトの名無しさん
2021/06/09(水) 14:15:52.13ID:10Zj2z/H >>891
総当たりでやる前に市松判定ではじく処理くらいは入れてもいいと思う
総当たりでやる前に市松判定ではじく処理くらいは入れてもいいと思う
895デフォルトの名無しさん
2021/06/09(水) 18:59:44.38ID:5vxiK06u お題:今日は第何曜日か計算して現在の日時を以下のように出力する
2021/06/09/第2水曜日/19:21/
ヒント
今日の日にちを7で割る 例:9 / 7
少数点以下は切り捨て
1を足す
カレンダーを見ながら計算すると分かりやすい
2021/06/09/第2水曜日/19:21/
ヒント
今日の日にちを7で割る 例:9 / 7
少数点以下は切り捨て
1を足す
カレンダーを見ながら計算すると分かりやすい
896デフォルトの名無しさん
2021/06/09(水) 19:53:11.25ID:xvC+FdYf >>895 Ruby
puts Time.now.then{|t| t.strftime('%Y/%m/%d/第%%d%%s曜日/%R') % [(t.day + 6) / 7, %w[日 月 火 水 木 金 土][t.wday]]}
# => 2021/06/09/第2水曜日/19:52
puts Time.now.then{|t| t.strftime('%Y/%m/%d/第%%d%%s曜日/%R') % [(t.day + 6) / 7, %w[日 月 火 水 木 金 土][t.wday]]}
# => 2021/06/09/第2水曜日/19:52
897デフォルトの名無しさん
2021/06/09(水) 21:01:27.30ID:jvfDlPRh >>895のヒント通りだと7の倍数の日付で不具合が発生するが宿題か?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★12 [BFU★]
- 台湾有事での集団的自衛権行使に賛成48%、「反対」が44.2% [♪♪♪★]
- 中国・国連大使「日本側は反省せず、発言の撤回拒否」 書簡を国連事務総長に送る [♪♪♪★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★3 [蚤の市★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★13 [BFU★]
- 【NHK】受信料の未払い督促を10倍に強化… 支払い拒否が続くと民事手続きも 「カーナビも受信料いただきます」方針 [冬月記者★]
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap600
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1807
- 京都競馬4回5日目エリザベス女王杯★3
- 福島競馬3回5日目
- とらせん IP
- こいせん 全レス転載禁止
- 「暇空茜」名乗る男性、神奈川県警が追送検 投稿サイトで大学生侮辱の疑い😲 [861717324]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪 ★4
- 日本人の48%覚悟完了… [819729701]
- 女の子、プチ整形で垢抜けまくってしまうwwwwwwwwwwwwwwwwwwwwwwww [329329848]
- 国民「コメが高くて買えないの助けて!」米卸「コメが高くて売れないの助けて!」農水相「価格はマーケット決めるものです🥴」 [817260143]
- 小野田大臣「それ正式なデータですか?報道ベースですよね」(10万いいね) [237216734]
