プログラミングのお題スレ Part22
1 :デフォルトの名無しさん :2023/08/03(木) 13:52:13.20 ID:/xW45k0z.net プログラミングのお題スレです。 【出題と回答例】 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/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part21 https://mevius.5ch.net/test/read.cgi/tech/1668333636/
358 :デフォルトの名無しさん :2024/06/07(金) 06:27:47.87 ID:ZJzD8UbY.net お題:引数sとnを取りシーザー暗号化を行う関数を作れ sは平文、nはずらす文字数(負数可)、返り値は暗号化後の文字列 同様の関数で「Hello, World!」を暗号化し復号化せよ
359 :デフォルトの名無しさん :2024/06/07(金) 09:04:03.36 ID:tQi+9x5m.net #! ruby class String def to_c(n) if %r|^n|=~n n=(n.sub(%r|^n|,"").to_i+26)%26 lb=("A".."Z").to_a.join sb=("a".."z").to_a.join la=lb[n..25]+lb[0..n-1] sa=sb[n..25]+sb[0..n-1] return self.tr(lb,la).tr(sb,sa) else return self end end end p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!" p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!" p "Hello,World!".to_c("s") #=>"Hello,World!" p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!" p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!"
360 :デフォルトの名無しさん :2024/06/07(金) 09:04:13.66 ID:tQi+9x5m.net #! ruby class String def to_c(n) if %r|^n|=~n n=(n.sub(%r|^n|,"").to_i+26)%26 lb=("A".."Z").to_a.join sb=("a".."z").to_a.join la=lb[n..25]+lb[0..n-1] sa=sb[n..25]+sb[0..n-1] return self.tr(lb,la).tr(sb,sa) else return self end end end p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!" p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!" p "Hello,World!".to_c("s") #=>"Hello,World!" p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!" p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!"
361 :デフォルトの名無しさん :2024/06/07(金) 21:13:26.78 ID:U/DqAKAj.net >>358 R https://ideone.com/Qj6B3w
362 :デフォルトの名無しさん :2024/06/07(金) 23:24:01.54 ID:KUK95Vnh.net Haskell 範囲外の数値は平文字をそのまま返すこととした。 import Data.Char cearsar n |(-26) <= n && n <= 26 = map (f n) where f x = chr.(+x).ord cearsar _ = cearsar 0 sample: ghci> cearsar 50 "Hello, World!" "Hello, World!" ghci> cearsar 3 "Hello, World!" "Khoor/#Zruog$" ghci> cearsar (-3) "Khoor/#Zruog$" "Hello, World!"
363 :デフォルトの名無しさん :2024/06/07(金) 23:28:58.71 ID:KMptjexu.net TA = [ * ?\x20 .. ?\x7E ] TS = TA.join def caesar( s, n ) s.tr( TS, TA.rotate( n ).join ) end s = "Hello, World!" p caesar( s, 0 ) #=> "Hello, World!" p caesar( s, 1 ) #=> "Ifmmp-!Xpsme\"" p caesar( s, -1 ) #=> "Gdkkn+~Vnqkc " p caesar( s, 20240607 ) #=> "Jgnnq.\"Yqtnf#" p caesar( caesar( s, 20240607 ), -20240607 ) #=> "Hello, World!" p caesar( 'HAL9000', 1 ) #=> "IBM:111"
364 :9 :2024/06/11(火) 14:41:10.23 ID:NjINqn/m.net >>350 Perl5 ($x = '04:05:06') =~ s/:/*/g; print eval $x;
365 :9 :2024/06/13(木) 14:34:57.00 ID:XgNTPGgf.net >>351 > 「バイトが1だったら次の4バイトを読み込んで整数として出力し、」 正直、意味がわからんかった 例で見ると 1 1 0 0 0 → 1 1 128 0 0 0 → 128 ということだが 1に続く4バイトを加算して出力するって意味だったのかいな
366 :デフォルトの名無しさん :2024/06/13(木) 14:48:43.48 ID:sldne70j.net >>365 整数が4バイト型という脳内補完だった
367 :デフォルトの名無しさん :2024/06/13(木) 14:54:19.57 ID:lNMgjwmg.net >>365 出題者がエンディアンを知らなくて説明もなくリトル環境を前提にしてしまっている エンディアンを知っている人たちは出題には書かれてないけど例よりリトル前提だと読み取ってこたえている
368 :デフォルトの名無しさん :2024/06/13(木) 14:59:03.73 ID:fAZ1qthZ.net >>367 リトルエンディアンはビットが逆って事じゃ無いぞ 10 00なら 00 10だぞ
369 :デフォルトの名無しさん :2024/06/13(木) 15:00:51.22 ID:lNMgjwmg.net >>368 例>>365 を見てないのか?
370 :9 :2024/06/13(木) 17:03:39.85 ID:XgNTPGgf.net >>367 ああそういうことか「4バイトを読み込んで整数」と書いてあるのはそういう意味だったのか ならわかるかも。 オレは4バイト一個一個が整数だと捉えて、それを「4バイトを読み込んで整数」とは何のこっちゃと?になってたわ
371 :9 :2024/06/13(木) 17:07:01.55 ID:XgNTPGgf.net すまんね68系で育ったもんですぐ連想できなんだ
372 :デフォルトの名無しさん :2024/06/14(金) 21:10:23.18 ID:H7FTNa+g.net >>369 例が間違えてるか説明が足りて無い 要は4バイトを読み込んでと説明してるが「一気に4バイト読み込む」とおかしくなる 1バイトずつ順に4バイトを読み込んでという説明なら例が腑に落ちる
373 :デフォルトの名無しさん :2024/06/14(金) 21:15:46.04 ID:cNkcubsv.net 例を示しての出題だから
374 : :2024/06/15(土) 16:15:42.96 ID:h/vMPGM+.net >>358 Kotlin 面倒なのでASCIIコード(0x20-0x7e)でしかシフトしないやつを作った。 まあでも Kotlin は Java 同様に内部でUnicodeで扱っているので平仮名とか漢字とか全然違う言語の文字とかも比較的楽に追加できると思う。 https://paiza.io/projects/5H9H1zSjDnVshGCf4JaQJg
375 :デフォルトの名無しさん :2024/06/19(水) 15:22:47.09 ID:xfTENZQh.net >>350 awk https://ideone.com/dMvvZG
376 :デフォルトの名無しさん :2024/06/20(木) 17:43:48.64 ID:0f6ktMCR.net お題:迷路生成を様々な言語で 例: C https://ideone.com/a527mc
377 :デフォルトの名無しさん :2024/06/20(木) 20:17:47.11 ID:0f6ktMCR.net https://paiza.io/projects/a6ZS3co-gsEV1tN57VUctA
378 :デフォルトの名無しさん :2024/06/21(金) 02:17:42.15 ID:wIxdZD1d.net 迷路。やっつけで汚い。乱数自前 C https://paiza.io/projects/5vyyygrG7exduzqDa-jBAA Rust https://paiza.io/projects/g1UmjFWydgmjAEZAgqS5xw
379 :デフォルトの名無しさん :2024/06/21(金) 05:01:41.33 ID:wIxdZD1d.net 乱数改良 C https://paiza.io/projects/UWRNkhfbdscMIwR0bTvqHA Rust https://paiza.io/projects/g1UmjFWydgmjAEZAgqS5xw
380 :デフォルトの名無しさん :2024/07/26(金) 09:46:37.73 ID:PcAUXe08.net お題:配管サイズの「A呼称」「B呼称」の相互変換 tps://www.keyence.co.jp/ss/products/process/flowmeter/technique/size.jsp などに掲載されている「A呼称」から「B呼称」への変換。及びその逆変換。 「A呼称」は整数値で(8とか)、「B呼称」は実数(0.125とか)または分母を8とする分数の分子(1とか)で表すものとする。 規格に存在しない場合(42Aとか)は考慮しなくてもよい。 表を引くだけなら簡単過ぎるので、ツェラーの公式の様な「技巧的」な解法を求む。
381 :デフォルトの名無しさん :2024/07/27(土) 06:14:08.30 ID:QMQQaL7S.net REM 呼称変換.bat chcp 65001 ruby -x "%~f0" ruby tmp.rb goto end #~ #!ruby #encoding: utf-8 Encoding.default_external='UTF-8' require 'base64' st=<<'EOS' IyFydWJ5CiNlbmNvZGluZzogdXRmLTgKRW5jb2RpbmcuZGVmYXVsdF9leHRl cm5hbD0nVVRGLTgnCgpjbGFzcyBPYmplY3QKICBkZWYgdG9fZmwKICAgIHJl dHVybiBldmFsKHNlbGYuc3BsaXQoIisiKS5tYXB7fGV8CiAgICAgIGUuc3Bs aXQoIi8iKS5tYXB7fGZ8IGYudG9fZi50b19zfS4KICAgICAgam9pbigiLyIp fS5qb2luKCIrIikpCiAgZW5kCmVuZAoKY2xhc3MgTnVtZXJpYwogIEBAYT1b Niw4LDEwLDE1LDIwLDI1LDMyLDQwLDUwLDY1LAogICAgICA4MCw5MCwxMDAs MTI1LDE1MCwxNzUsMjAwLDIyNV0KICBAQGI9WyIxLzgiLCIxLzQiLCIzLzgi LCIxLzIiLCIzLzQiLCIxIiwKICAgICAgIjErMS80IiwiMSsxLzIiLCIyIiwi MisxLzIiLCIzIiwKICAgICAgIjMrMS8yIiwiNCIsIjUiLCI2IiwiNyIsIjgi LCI5Il0KICBAQGM9QEBiLm1hcHt8ZXwgZS50b19mbH0KICBkZWYgYV90b19i CiAgICBuPXNlbGYKICAgIGlmIG48MjUwCiAgICAgIGE9NgogICAgICBAQGEu ZWFjaHt8ZXwgYT1lIGlmIGUvbjw9MS4wfQogICAgICBiPUBAYltAQGEuaW5k ZXgoYSldCiAgICAgIGM9QEBjW0BAYS5pbmRleChhKV0KICAgICAgcmV0dXJu ICIoYT0je2F9KSBiPSN7Yn09I3tjfSIKICAgIGVsc2UKICAgICAgYT0obi81 MCkudG9faSo1MAogICAgICBiPWEvMjUKICAgICAgcmV0dXJuICIoYT0je2F9
382 :デフォルトの名無しさん :2024/07/27(土) 06:15:03.76 ID:QMQQaL7S.net KSBiPSN7Yn0iCiAgICBlbmQKICBlbmQKICBkZWYgYl90b19hCiAgICBuPXNl bGYKICAgIGlmIG48MTAKICAgICAgYz0wLjEyNQogICAgICBAQGMuZWFjaHt8 ZXwgYz1lIGlmIGUvbjw9MS4wfQogICAgICBhPUBAYVtAQGMuaW5kZXgoYyld CiAgICAgIGI9QEBiW0BAYy5pbmRleChjKV0KICAgICAgcmV0dXJuICIoYj0j e2J9PSN7Y30pIGE9I3thfSIKICAgIGVsc2UKICAgICAgYj1uLnRvX2kKICAg ICAgYT1iKjI1CiAgICAgIHJldHVybiAiKGI9I3tifSkgYT0je2F9IgogICAg ZW5kCiAgZW5kCmVuZAoKd2hpbGUgMQogIGFyPVsi77yh5ZG856ew44GL44KJ 77yi5ZG856ewIiwi77yi5ZG856ew44GL44KJ77yh5ZG856ewIiwi57WC5LqG Il0KICBtc2c9YXIubWFwLndpdGhfaW5kZXh7fGUsaXwiI3tpKzF9OiN7ZX0i fS5qb2luKCJcbiIpKyJcbiIKICBwcmludCBtc2crImlucHV0IG51bWJlciA+ ICIKICBuPSRzdGRpbi5nZXRzLnRvX2kKICBicmVhayBpZiBuPT0zCiAgbmV4 dCBpZiBuPT0wCiAgd2hpbGUgMQogICAgcHJpbnQgIiN7YXJbbi0xXX06aW5w dXQgdmFsdWUgPiAiCiAgICBtPSRzdGRpbi5nZXRzLmNob21wCiAgICBicmVh ayBpZiBtPT0iIgogICAgbT1tLnRvX2ZsCiAgICBwdXRzIG0uYV90b19iIGlm IG49PTEKICAgIHB1dHMgbS5iX3RvX2EgaWYgbj09MgogIGVuZAplbmQK EOS File.write("tmp.rb",Base64.decode64(st)) __END__ :end
383 :デフォルトの名無しさん :2024/07/30(火) 12:03:21.52 ID:zP/xDheD.net お題 C言語のトライグラフ(可能ならダイグラフも)と普通のテキストとの相互変換。 ファイルまたは標準入力から読んで変換した結果を標準出力に出力する。 面倒なら文字列変換する関数とそれをテストするメイン関数のみでも良い。
384 : 警備員[Lv.8] :2024/08/03(土) 07:16:23.70 ID:HS6IEZQf.net お題 Unicode 文字列を UTF-9 へ変換する。また UTF-9 を Unicode 文字列に変換する。 ただし1バイトが9bitではないコンピュータを使用する場合は9bit以上で扱いやすいbit数の変数(例えば 16bitの変数)を代用して下9bitのみを使用する等しても良い。 UTF-9 の仕様は RFC 4042 を見るか、または下記URLのページを参照。 https://www.wdic.org/w/WDIC/UTF-9%20%28RFC%29
385 : 警備員[Lv.9] :2024/08/03(土) 17:38:42.19 ID:HS6IEZQf.net >>383 Kotlin Digraph, Trigraph の変換と逆変換 https://paiza.io/projects/FPUStm3O4tZZMYi1Cw2ruw https://paiza.io/projects/4vD2Ux8Jd6EzLIynkzTXtw Map と正規表現使った簡単な変換なので他の言語で作っても大差ないと思う。
386 :デフォルトの名無しさん :2024/08/03(土) 20:58:23.65 ID:S2fEkJP0.net お題 整数の格子がある(伝われ) 任意の2点間を線で結ぶ(座標成分は実数) 格子と交わるところで線を分割せよ sssp://o.5ch.net/23qe8.png
387 :デフォルトの名無しさん :2024/08/03(土) 21:19:51.17 ID:VMb0ie+F.net >>386 jwwの外部変形としてこんな感じで交点で分割させるの作ったことあるけどプログラミングスレののお題としては座標指定もなく漠然としすぎていていかがなものか。ちょっと伝わんなかった。
388 :デフォルトの名無しさん :2024/08/03(土) 21:36:58.95 ID:dM8NlTKR.net ごめん、画像から察してほしい 遊びだから曖昧なところは適当で https://i.imgur.com/YUKpLcI.png
389 :デフォルトの名無しさん :2024/08/03(土) 21:50:20.46 ID:VMb0ie+F.net >>388 二直線の交点は連立方程式を解けば良くて行列を使えば簡単だけど、どういう回答が求められてるのかが分からず途方に暮れております
390 :デフォルトの名無しさん :2024/08/03(土) 22:08:55.42 ID:/AInVOhB.net >>388 出直し
391 :デフォルトの名無しさん :2024/08/03(土) 22:28:33.50 ID:Dl6/uvrz.net クイズと「プログラミングのお題」との決定的な違い 検証するための入力(問題)と出力(解答)例が明記されているかどうか
392 :デフォルトの名無しさん :2024/08/03(土) 22:29:35.16 ID:S2fEkJP0.net テンプレに書いてなかったしいいやって思っちゃった ここまで伝わらんもんなのか…
393 :デフォルトの名無しさん :2024/08/03(土) 22:35:56.24 ID:S2fEkJP0.net 具体例を計算するのはめんどくさいけど、例えばさっきの絵で言えば右上が始点で左下が終点なら始点側から順番に座標を出力するとかね
394 :デフォルトの名無しさん :2024/08/03(土) 22:41:57.69 ID:Dl6/uvrz.net 入力例とその時の出力例を データとして数種類用意すればOK 例えば>>236 とか>>345 を参考
395 :デフォルトの名無しさん :2024/08/03(土) 22:42:49.82 ID:t4RpIT1N.net >>392 そういうことは伝える努力をしてから言おうな
396 :デフォルトの名無しさん :2024/08/03(土) 22:44:30.36 ID:S2fEkJP0.net めんどくさい そこまでして出そうと思わんから興味ないならスルーで
397 :デフォルトの名無しさん :2024/08/03(土) 22:52:49.60 ID:/AInVOhB.net この頭の悪さを見るに学校の課題か何かを丸投げしようとしてるのかな
398 :デフォルトの名無しさん :2024/08/03(土) 23:04:31.31 ID:Dl6/uvrz.net 入出力例があると仕様が定まってプログラミングのお題が成立する 入出力例がないと宿題を手伝わせようとしているだけの可能性も否定できないね
399 :デフォルトの名無しさん :2024/08/04(日) 00:49:43.30 ID:iskScWib.net >>396 ドンマイ、出題の意図は分かった気がするので改めて出題 お題 10mm方眼用紙、左下原点、入力された任意の直線と方眼線との交点を求めよ (例)始点(3.5,5.2)終点(6.3,8.1)
400 :デフォルトの名無しさん :2024/08/04(日) 04:51:29.74 ID:9TVMMXOl.net >>386 nodejs https://www.mycompiler.io/view/8GupmXA8eQS
401 :デフォルトの名無しさん :2024/08/09(金) 23:38:00.57 ID:PnKZlDGe.net お題:与えられた線分を指定された長さLで分割せよ。ただし最後に余る分は長さLでなくてもよい。 線分([始点,終点])=[[0,0],[100,100]] L=50 ↓ [[[0,0],[50,50]],[[50,50],[100,100]]]
402 : :2024/08/10(土) 04:24:35.61 ID:C1sXjWXk.net >>401 その例おかしくない?それか問題がおかしいか。 長さがLということはx=yの線を分割する場合は座標はx, y 共にL/√2倍にならないか?
403 :デフォルトの名無しさん :2024/08/10(土) 08:05:08.91 ID:cX2Nc5cZ.net ごめん、ミスった
404 :デフォルトの名無しさん :2024/08/10(土) 08:07:10.85 ID:cX2Nc5cZ.net 修正 線分([始点,終点])=[[0,0],[120,0]] L=50 ↓ [[[0,0],[50,0]],[[50,0],[100,0]],[[100,0],[120,0]]]
405 :デフォルトの名無しさん :2024/08/10(土) 08:54:23.54 ID:DYGkQoQe.net REM 座標計算.bat chcp 65001 ruby -x "%~f0" goto end #~ #!ruby #encoding: utf-8 Encoding.default_external='UTF-8' require "matrix" while 1 print "input start point > " #0,0 p1=$stdin.gets.split(",").map{|e| e.to_f} print "input end point > " #120,0 p2=$stdin.gets.split(",").map{|e| e.to_f} print "input length > " #50 l=$stdin.gets.to_f exit if l<=0 p1[1]=0 unless p1[1] p2[1]=0 unless p2[1] v1=Vector.elements(p1) v2=Vector.elements(p2) m=(v2-v1).r n=(m/l).to_i a=(0..n).map{|e| l*e} b=a.map{|e| v1+(v2-v1)*(e/(v2-v1).r)}.map{|e| e.to_a} b<<p2 p b.uniq end __END__ :end
406 :デフォルトの名無しさん :2024/08/20(火) 15:28:18.45 ID:YrWgN0+y.net お題:今日、または任意の日付から、もういくつ寝るとお正月かを求めよ。(昼寝は除く)
407 :デフォルトの名無しさん :2024/08/20(火) 18:03:45.73 ID:UEEknM+z.net >>406 lisp https://ideone.com/RhvMjC
173 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者