プログラミングのお題スレ Part22

1デフォルトの名無しさん
垢版 |
2023/08/03(木) 13:52:13.20ID:/xW45k0z
プログラミングのお題スレです。

【出題と回答例】
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/
334デフォルトの名無しさん
垢版 |
2024/04/18(木) 22:41:59.70ID:y7NBfn6/
>>331
その通り。そして、(a, b, c) = (10000.1, 10000.2, 20000.3)とすれば、正しい面積は0なのに
Heron's Δ' = 2.69745899635295とAccurate Δ = 1.34872949817647は両方とも大間違いになる。
この場合のようにHeron's Δ'での問題がAccurate Δで改善されないだけでなく、>>331の引用の
場合のようにHeron's Δ'では結果的に問題ないのにAccurate Δでは新たな問題が生じてしまうのは、
参考文献の11ページで述べられた

 An algorithm stood convicted of numerical instability if it could be replaced by
 a new algorithm at least about as fast and accurate as the old for all data,
 and good for all data for which the old algorithm was bad.

 すべてのデータに対して旧アルゴリズムと少なくとも同じくらい高速かつ正確であり、
 かつ旧アルゴリズムが悪くなるすべてのデータに対して良くなる新アルゴリズムによって
 置き換えることができるとしたら、旧アルゴリズムは数値的に不安定と判定される。

という判定条件を満たさないから、Accurate Δは改良版としての適性を欠く。

>>333
その例では有効桁数がHeron's Δ'は0桁、Accurate Δは1桁しかなく、どちらの品質も絶対的に
劣悪で、それらの間の相対的な優劣に大した意味はない。

そもそも針のように異様に細長い三角形が重箱の隅をつつくような話で、普通はそんな場合は
想定しなくても良く、ヘロンの公式で充分。そこを敢えてつつくなら、ヘロンの公式だけでなく
改良式もぼろが出てしまうだけ。
2024/04/18(木) 22:55:38.47ID:n9UdHBZN
総合すると有効桁じゃなくて精度が2桁良いし実装上は大差ないから改良版を使う、と言う方が自然では?
336デフォルトの名無しさん
垢版 |
2024/05/01(水) 12:56:47.83ID:nIC3qyB/
スレ落ちそうなのであげ
2024/05/01(水) 15:39:17.16ID:hqp8cDbc
>>336
嵐を呼び込むために・・・
2024/05/01(水) 22:59:10.72ID:4hNncNW1
何でこんなに過疎化しちゃったのか。前に頻繁に出題していた人がいなくなったのか。
2024/05/02(木) 10:32:38.87ID:ijoO2C2L
お題を出してみてください
340デフォルトの名無しさん
垢版 |
2024/05/02(木) 16:59:52.63ID:DPVqLIsI
>>338
お題が出尽くしたってことはあるんじゃないか?
過去のお題拾ってきてそれを投稿すればいいぐらいまでスレが成熟してしまったのでは?
341デフォルトの名無しさん
垢版 |
2024/05/02(木) 17:21:22.07ID:pg1ymc2D
PC買って、脱衣AIで遊びまくってる「
一日一回無料で使えるみたい「
https://mao.5ch.net/test/read.cgi/gymnastics/1322657462/98
34217
垢版 |
2024/05/02(木) 18:44:04.16ID:LxBZq7I4
>>340
なるほど。それをやるか。
34317
垢版 |
2024/05/14(火) 05:34:03.62ID:ou5vbzLn
じゃあ10年前のこのお題(URLを書くとNGになるようなので書かない)。

プログラミングのお題スレ Part4
115 :デフォルトの名無しさん:2014/06/21(土) 18:36:45.72 ID:/fMJIWig.net

お題:文字列Aを1回以上繰り返した文字列Bが与えられたとき
文字列Aを求める。ただしAの候補が複数ある場合は最短のものとする。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> a
123412312341231234123123412312341231234123 -> 1234123
oxoxoxoxoxoxoxoxxoxoxoxoxoxoxoxoxx -> oxoxoxoxoxoxoxoxx
2024/05/14(火) 17:27:18.46ID:AXiunB2g
ttps://ideone.com/KrUq7e
Z-algorithm を使って O(|B|) で解いてみた
345 警備員[Lv.4][初]
垢版 |
2024/05/14(火) 20:59:46.84ID:xk+62xOP
>>343
R
https://ideone.com/ITR83u

C
https://ideone.com/g2INyj
346 警備員[Lv.18]
垢版 |
2024/05/23(木) 14:16:50.64ID:zV267ZMC
あれ?どんぐりの都合か?URL書いてあると書けなくなったような?
347 警備員[Lv.18]
垢版 |
2024/05/23(木) 14:17:56.56ID:zV267ZMC
URLの先頭のhを抜いて書いてみよう。

>>343
Kotlin

こちらは普通に自作したやつ。
ttps://paiza.io/projects/OYy-A5rfKg7RqLzv-DKMIA

こちらは正規表現使ってとても小さくなったやつ。
ttps://paiza.io/projects/jgmtMRDhKfcjYfGAglEl3g
2024/06/01(土) 10:16:34.91ID:hzaQXY32
お題: コロン区切りの時分秒の時刻が与えられるので時分秒をそれぞれ掛け算した結果を表示せよ

例:
04:05:06
120
2024/06/01(土) 11:08:12.83ID:hzaQXY32
お題: バイト列が与えられる。先頭から解析した場合にバイトが1だったら次の4バイトを読み込んで整数として出力し、バイトが2だったら次のバイトを0が来るまで読み込んで文字列として出力せよ

入力
1 1 0 0 0 2 65 66 67 0 1 128 0 0 0

出力
1ABC128
2024/06/01(土) 12:57:50.32ID:M5I0DyuF
知らんがな
351デフォルトの名無しさん
垢版 |
2024/06/01(土) 23:31:08.51ID:oEZc8FHN
>>348
R
https://ideone.com/x4hIYG

>>349
C (データ識別子は1か2しかないものとし、整数のエンディアンは実行環境依存とする)
https://ideone.com/aJts6n
352 警備員[Lv.19]
垢版 |
2024/06/02(日) 04:45:03.04ID:yi3OE76t
>>348
Perl

bash のコマンドラインから入力して実行(ワンライナー)

$ perl -ne 'if(/(\d+):(\d+):(\d+)/){print $1*$2*$3,"\n"}else{print"入力エラー\n"}'
1:2:3
6
3:4:5
60
04:05:06
120
$
353 警備員[Lv.20]
垢版 |
2024/06/02(日) 05:19:02.45ID:yi3OE76t
>>349
Kotlin
https://paiza.io/projects/lk2q4-Ciny3H2NptrkAbcw
2024/06/03(月) 13:25:02.42ID:21u+58W3
>>348
Windows のPowershell 上で、Ruby の1-liner を使う

末尾の改行を削除して、: で分割して、
文字列を数値型に変換してから、全ての要素を掛ける。
%Q で、ダブルクォーテーションをエスケープする。つまり、split(":")

echo '01:2:09' | ruby -ne 'puts $_.chomp.split(%Q[:]).map(&:to_i).inject(:*)'

18
2024/06/03(月) 15:28:01.42ID:p+D7Hh++
>ruby -ne 'p eval($_.gsub(":","*"))'
1:2:9
18
2024/06/07(金) 06:27:47.87ID:ZJzD8UbY
お題:引数sとnを取りシーザー暗号化を行う関数を作れ
sは平文、nはずらす文字数(負数可)、返り値は暗号化後の文字列
同様の関数で「Hello, World!」を暗号化し復号化せよ
2024/06/07(金) 09:04:03.36ID:tQi+9x5m
#! 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!"
2024/06/07(金) 09:04:13.66ID:tQi+9x5m
#! 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!"
359デフォルトの名無しさん
垢版 |
2024/06/07(金) 21:13:26.78ID:U/DqAKAj
>>356
R
https://ideone.com/Qj6B3w
360デフォルトの名無しさん
垢版 |
2024/06/07(金) 23:24:01.54ID:KUK95Vnh
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!"
2024/06/07(金) 23:28:58.71ID:KMptjexu
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"
3629
垢版 |
2024/06/11(火) 14:41:10.23ID:NjINqn/m
>>348 Perl5

($x = '04:05:06') =~ s/:/*/g;
print eval $x;
3639
垢版 |
2024/06/13(木) 14:34:57.00ID:XgNTPGgf
>>349
> 「バイトが1だったら次の4バイトを読み込んで整数として出力し、」
正直、意味がわからんかった

例で見ると
1 1 0 0 0 → 1
1 128 0 0 0 → 128
ということだが

1に続く4バイトを加算して出力するって意味だったのかいな
2024/06/13(木) 14:48:43.48ID:sldne70j
>>363
整数が4バイト型という脳内補完だった
2024/06/13(木) 14:54:19.57ID:lNMgjwmg
>>363
出題者がエンディアンを知らなくて説明もなくリトル環境を前提にしてしまっている
エンディアンを知っている人たちは出題には書かれてないけど例よりリトル前提だと読み取ってこたえている
366デフォルトの名無しさん
垢版 |
2024/06/13(木) 14:59:03.73ID:fAZ1qthZ
>>365
リトルエンディアンはビットが逆って事じゃ無いぞ

10 00なら
00 10だぞ
2024/06/13(木) 15:00:51.22ID:lNMgjwmg
>>366
>>363を見てないのか?
3689
垢版 |
2024/06/13(木) 17:03:39.85ID:XgNTPGgf
>>365
ああそういうことか「4バイトを読み込んで整数」と書いてあるのはそういう意味だったのか
ならわかるかも。
オレは4バイト一個一個が整数だと捉えて、それを「4バイトを読み込んで整数」とは何のこっちゃと?になってたわ
3699
垢版 |
2024/06/13(木) 17:07:01.55ID:XgNTPGgf
すまんね68系で育ったもんですぐ連想できなんだ
370デフォルトの名無しさん
垢版 |
2024/06/14(金) 21:10:23.18ID:H7FTNa+g
>>367
例が間違えてるか説明が足りて無い

要は4バイトを読み込んでと説明してるが「一気に4バイト読み込む」とおかしくなる
1バイトずつ順に4バイトを読み込んでという説明なら例が腑に落ちる
2024/06/14(金) 21:15:46.04ID:cNkcubsv
例を示しての出題だから
372 警備員[Lv.23]
垢版 |
2024/06/15(土) 16:15:42.96ID:h/vMPGM+
>>356
Kotlin

面倒なのでASCIIコード(0x20-0x7e)でしかシフトしないやつを作った。
まあでも Kotlin は Java 同様に内部でUnicodeで扱っているので平仮名とか漢字とか全然違う言語の文字とかも比較的楽に追加できると思う。

https://paiza.io/projects/5H9H1zSjDnVshGCf4JaQJg
373デフォルトの名無しさん
垢版 |
2024/06/19(水) 15:22:47.09ID:xfTENZQh
>>348 awk
https://ideone.com/dMvvZG
374デフォルトの名無しさん
垢版 |
2024/06/20(木) 17:43:48.64ID:0f6ktMCR
お題:迷路生成を様々な言語で

例:
C
https://ideone.com/a527mc
2024/06/20(木) 20:17:47.11ID:0f6ktMCR
https://paiza.io/projects/a6ZS3co-gsEV1tN57VUctA
376デフォルトの名無しさん
垢版 |
2024/06/21(金) 02:17:42.15ID:wIxdZD1d
迷路。やっつけで汚い。乱数自前

C
https://paiza.io/projects/5vyyygrG7exduzqDa-jBAA

Rust
https://paiza.io/projects/g1UmjFWydgmjAEZAgqS5xw
2024/06/21(金) 05:01:41.33ID:wIxdZD1d
乱数改良

C
https://paiza.io/projects/UWRNkhfbdscMIwR0bTvqHA

Rust
https://paiza.io/projects/g1UmjFWydgmjAEZAgqS5xw
2024/07/26(金) 09:46:37.73ID:PcAUXe08
お題:配管サイズの「A呼称」「B呼称」の相互変換
tps://www.keyence.co.jp/ss/products/process/flowmeter/technique/size.jsp
などに掲載されている「A呼称」から「B呼称」への変換。及びその逆変換。
「A呼称」は整数値で(8とか)、「B呼称」は実数(0.125とか)または分母を8とする分数の分子(1とか)で表すものとする。
規格に存在しない場合(42Aとか)は考慮しなくてもよい。
表を引くだけなら簡単過ぎるので、ツェラーの公式の様な「技巧的」な解法を求む。
2024/07/27(土) 06:14:08.30ID:QMQQaL7S
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
2024/07/27(土) 06:15:03.76ID:QMQQaL7S
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
381デフォルトの名無しさん
垢版 |
2024/07/30(火) 12:03:21.52ID:zP/xDheD
お題
C言語のトライグラフ(可能ならダイグラフも)と普通のテキストとの相互変換。

ファイルまたは標準入力から読んで変換した結果を標準出力に出力する。
面倒なら文字列変換する関数とそれをテストするメイン関数のみでも良い。
382 警備員[Lv.8]
垢版 |
2024/08/03(土) 07:16:23.70ID:HS6IEZQf
お題
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
383 警備員[Lv.9]
垢版 |
2024/08/03(土) 17:38:42.19ID:HS6IEZQf
>>381
Kotlin

Digraph, Trigraph の変換と逆変換

https://paiza.io/projects/FPUStm3O4tZZMYi1Cw2ruw
https://paiza.io/projects/4vD2Ux8Jd6EzLIynkzTXtw

Map と正規表現使った簡単な変換なので他の言語で作っても大差ないと思う。
384デフォルトの名無しさん
垢版 |
2024/08/03(土) 20:58:23.65ID:S2fEkJP0
お題
整数の格子がある(伝われ)
任意の2点間を線で結ぶ(座標成分は実数)
格子と交わるところで線を分割せよ
2024/08/03(土) 21:19:51.17ID:VMb0ie+F
>>384
jwwの外部変形としてこんな感じで交点で分割させるの作ったことあるけどプログラミングスレののお題としては座標指定もなく漠然としすぎていていかがなものか。ちょっと伝わんなかった。
386デフォルトの名無しさん
垢版 |
2024/08/03(土) 21:36:58.95ID:dM8NlTKR
ごめん、画像から察してほしい
遊びだから曖昧なところは適当で
https://i.imgur.com/YUKpLcI.png
2024/08/03(土) 21:50:20.46ID:VMb0ie+F
>>386
二直線の交点は連立方程式を解けば良くて行列を使えば簡単だけど、どういう回答が求められてるのかが分からず途方に暮れております
2024/08/03(土) 22:08:55.42ID:/AInVOhB
>>386
出直し
2024/08/03(土) 22:28:33.50ID:Dl6/uvrz
クイズと「プログラミングのお題」との決定的な違い
検証するための入力(問題)と出力(解答)例が明記されているかどうか
390デフォルトの名無しさん
垢版 |
2024/08/03(土) 22:29:35.16ID:S2fEkJP0
テンプレに書いてなかったしいいやって思っちゃった
ここまで伝わらんもんなのか…
391デフォルトの名無しさん
垢版 |
2024/08/03(土) 22:35:56.24ID:S2fEkJP0
具体例を計算するのはめんどくさいけど、例えばさっきの絵で言えば右上が始点で左下が終点なら始点側から順番に座標を出力するとかね
2024/08/03(土) 22:41:57.69ID:Dl6/uvrz
入力例とその時の出力例を
データとして数種類用意すればOK
例えば>>234とか>>343を参考
2024/08/03(土) 22:42:49.82ID:t4RpIT1N
>>390
そういうことは伝える努力をしてから言おうな
394デフォルトの名無しさん
垢版 |
2024/08/03(土) 22:44:30.36ID:S2fEkJP0
めんどくさい
そこまでして出そうと思わんから興味ないならスルーで
2024/08/03(土) 22:52:49.60ID:/AInVOhB
この頭の悪さを見るに学校の課題か何かを丸投げしようとしてるのかな
2024/08/03(土) 23:04:31.31ID:Dl6/uvrz
入出力例があると仕様が定まってプログラミングのお題が成立する
入出力例がないと宿題を手伝わせようとしているだけの可能性も否定できないね
2024/08/04(日) 00:49:43.30ID:iskScWib
>>394
ドンマイ、出題の意図は分かった気がするので改めて出題
お題
10mm方眼用紙、左下原点、入力された任意の直線と方眼線との交点を求めよ
(例)始点(3.5,5.2)終点(6.3,8.1)
2024/08/04(日) 04:51:29.74ID:9TVMMXOl
>>384
nodejs
https://www.mycompiler.io/view/8GupmXA8eQS
2024/08/09(金) 23:38:00.57ID:PnKZlDGe
お題:与えられた線分を指定された長さLで分割せよ。ただし最後に余る分は長さLでなくてもよい。
線分([始点,終点])=[[0,0],[100,100]]
L=50

[[[0,0],[50,50]],[[50,50],[100,100]]]
400 警備員[Lv.7]
垢版 |
2024/08/10(土) 04:24:35.61ID:C1sXjWXk
>>399
その例おかしくない?それか問題がおかしいか。
長さがLということはx=yの線を分割する場合は座標はx, y 共にL/√2倍にならないか?
2024/08/10(土) 08:05:08.91ID:cX2Nc5cZ
ごめん、ミスった
2024/08/10(土) 08:07:10.85ID:cX2Nc5cZ
修正
線分([始点,終点])=[[0,0],[120,0]]
L=50

[[[0,0],[50,0]],[[50,0],[100,0]],[[100,0],[120,0]]]
2024/08/10(土) 08:54:23.54ID:DYGkQoQe
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
2024/08/20(火) 15:28:18.45ID:YrWgN0+y
お題:今日、または任意の日付から、もういくつ寝るとお正月かを求めよ。(昼寝は除く)
2024/08/20(火) 18:03:45.73ID:UEEknM+z
>>404 lisp
https://ideone.com/RhvMjC
406デフォルトの名無しさん
垢版 |
2024/08/21(水) 11:05:18.96ID:kc5yLFga
>>404
徹夜はどうしますか?
407 警備員[Lv.12]
垢版 |
2024/08/22(木) 08:01:35.77ID:dwyU9o+h
>>404
bash のコマンドラインから expr コマンドと date コマンドを利用して次のようにして計算した。
実際に日数が経過後に1月1日になっているかの確認もした。

$ expr $( date -d '2024/12/31' +%j ) - $( date +%j ) + 1
132
$ date -d 'now +132 days'
2025年 1月 1日 水曜日 07:58:54 JST
$
408 警備員[Lv.12]
垢版 |
2024/08/22(木) 08:04:39.02ID:dwyU9o+h
>>407 をちょっと改良
今年に限定しないやりかた。

$ expr $( date -d $(date +%Y)'/12/31' +%j ) - $( date +%j ) + 1
132
$
409デフォルトの名無しさん
垢版 |
2024/08/24(土) 01:28:41.99ID:Ou5o/VfJ
ロケール設定なしとかジョークかよ
2024/08/24(土) 07:25:49.23ID:/cWP8Umv
こまけぇこたぁいいんだよ(AA略)
2024/08/24(土) 23:36:40.04ID:/cWP8Umv
てかこのお題で私、期間中にヨーロッパから帰国しますんでってな特殊ケースまで折り込めって方が無理に思えるけど、ロケール設定した模範解答をどぞ、
2024/08/24(土) 23:58:49.15ID:D7M8BxWI
せっかくだから、旧正月も考慮して
413デフォルトの名無しさん
垢版 |
2024/09/01(日) 04:58:12.84ID:sYmH1KkQ
お題:複数の文字列が格納されている配列と配列の添字がある。標準入力からnextが入力されたら文字列を表示し添字を進め、prevが入力されたら文字列を表示して添字を戻す。添字が始点と終点に達したら始点は終点に、終点は始点に移動させる。動作は例に合うように実装せよ。

v = ["aaa","bbb","ccc"]
next
aaa
next
bbb
prev
aaa
next
bbb
next
ccc
next
aaa
2024/09/01(日) 08:19:39.59ID:MmIh9kGJ
>>413 lua
https://ideone.com/OEEqAA
2024/09/01(日) 11:51:46.92ID:Zfu0bsG/
>>413
REM nextprev.bat
ruby -x "%~f0"
exit
#~
#!ruby
#encoding: utf-8
i=0;v=["aaa","bbb","ccc"]
while 1
puts v[i]
print "input next or prev [n/p]> "
a=$stdin.gets.chomp
if ""==a
exit
elsif /^n/=~a
i=i+1
elsif /^p/=~a
i=i-1
end
i=(i+3)%3
end
2024/09/03(火) 07:13:35.79ID:1bP400Ev
お題
引数aから引数bまでの数列を返す関数がある。この関数を数列にゾロ目が含まれていた場合に空の数列を返すように実装せよ
2024/09/03(火) 07:56:47.18ID:Jxau6mSM
>>416 lisp
https://ideone.com/WMC2aN
2024/09/03(火) 09:22:31.13ID:HQsZJT0t
>>417
windowsを使ってるんですが>>417を実行するにはどのような環境を整えれば良いでしょうか?
2024/09/03(火) 10:00:07.45ID:VHciJKZC
417ではないが,clispかsbclをインストールすればいいよ.Windowsでもできるし,WSLならさらに簡単にできる
2024/09/03(火) 10:17:03.41ID:HQsZJT0t
>>419
ありがとうございます
そうするとemacsが使えるようになるのでしょうか?
それともプログラミング言語としてのlisp環境が整うだけでしょうか?
2024/09/03(火) 13:27:22.48ID:Jxau6mSM
>>418
Windowsは不断使いしていないんで開発環境とかemacsとかはわからないけど、動かすだけなら
https://www.sbcl.org/platform-table.html からWindows版のSBCLインストーラーを落としてインストール

コマンドプロンプトなどのコマンド行で
sbcl --script ファイル名 とすると「ファイル名」のファイルをスクリプトとして実行します

--script を付けない場合REPLが起動します(Pythonでいうところの対話モード)
これの終了は (quit) と入力してEnterキー
2024/09/03(火) 13:38:16.60ID:Jxau6mSM
ちょっと試すだけならウェブサービスを使う手も

Common Lispを動かせるオンラインコンパイラーサイト
https://rextester.com/l/common_lisp_online_compiler
https://www.jdoodle.com/execute-clisp-online
https://wandbox.org/

これらはideoneとは異なり "Share" とか "Save" とかをクリックしない限り保存・公開されない(はず)
2024/09/03(火) 22:13:24.20ID:HQsZJT0t
レス頂いた方、ありがとうございます
とりあえず>>422辺りで試してみます
2024/09/04(水) 03:34:25.27ID:k+9kMn3u
REM zorome.bat
ruby -x "%~f0"
exit
#~
#!ruby
while 1
print "input a > "
a=$stdin.gets.chomp
exit if a==""
a=a.to_i
print "input b > "
b=$stdin.gets.to_i
ar=(a..b).to_a
z=0
ar.each{|e|
n=e.to_s.gsub(/^-/,"")
m=n.split("").uniq
if n.size>1 && m.size==1
z=1
break
end
}
ar=[] if z==1
p ar
end
__END__
a=0;b=10 => [0,1,2,3,4,5,6,7,8,9,10]
a=0;b=11 => []
2024/09/04(水) 06:34:37.52ID:FQ5fjJ2m
>>416
fn is_zorome(n: i32) -> bool {
let s = n.abs().to_string();
let b = s.as_bytes();
if b.len() > 1 {
b[1..].iter().all(|&d| d == b[0])
} else {
false
}
}

fn odai(a: i32, b: i32) -> Vec<i32> {
if (a..=b).any(|n| is_zorome(n)) {
vec![]
} else {
(a..=b).collect()
}
}

fn main() {
assert_eq!(odai(1, 10), [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
assert_eq!(odai(1, 11), []);
}
426 警備員[Lv.7]
垢版 |
2024/09/29(日) 14:12:38.24ID:Sdg7KlJR
>>416
Kotlin
(URL投稿禁止になってるようなので先頭の https:// は抜きで)。
paiza.io/projects/nPK7U1uDtt4b7O2saECP0A

[入力]タブの方で開始、終了の値を入れている。とりあえず 10 40 を入れてある。
一桁の数を指定した場合は全てゾロ目扱いになるので出力は空のリストになる。
2024/10/08(火) 17:17:22.09ID:CS1PHEoT
お題:文字列を中央寄せする関数を作れ。
関数は文字列、全体の横幅(整数)、余白を埋める文字、を引数に取る。横幅分の文字列を引数の文字で作成し、その中央に引数の文字列を埋め込み戻り値として返せ。
2024/10/08(火) 19:52:28.65ID:Rq2an05y
py
text.center
429 警備員[Lv.12]
垢版 |
2024/10/09(水) 00:07:23.87ID:O5zCFPJO
>>427
文字幅についてはどう考えれば良い?
エンコーディングが UTF-8 や UTF-16 だとバイト数や要素数が画面の表示幅と一致しないわけだが。
一致するような Shift-JIS だったとしても端末のフォント設定次第で表示幅が変わる。
2024/10/09(水) 00:38:16.24ID:j8RLE5Fj
EUCにも半角2バイト文字なんてあったりする
2024/10/09(水) 00:56:06.70ID:LtADXZKH
asciiの前提では
全角判定関数は切り分けるべきだし
432デフォルトの名無しさん
垢版 |
2024/10/09(水) 01:18:55.72ID:4B3K5XUV
#ドラクエ3が超好きだったので、お題にしてみる。ただしロト3のファミコン版のドラクエな!w
"こちらの職業は勇者、戦士、空手家、僧侶、柔道家の5人がかりw
勇者から柔道家までの5人の攻撃回数が異なります。"まずは変数と確率の問題。
勇者=you戦士=sen,空手家=kara,僧侶=sou
まず勇者は1~2回攻撃、戦士は1~3回攻撃、空手は2~3回攻撃、柔道は足払いで相手を20%で麻痺させることができる。(1ターン何もできない)10%では超麻痺。(2ターン何も敵は動かない)
5%でクリティカルヒットの足払いで3ターン敵は何もできない。
柔道は敵に攻撃を加えられない分、足払いで相手を痙攣させる。
(勇者の1回分の攻撃は100〜200、20%の確率でクリティカルヒットの攻撃になることがある。
(戦士の攻撃は200〜300、20%の確率で攻撃がクリティカルヒット1回になることがある。
(空手家)空手家の攻撃は350〜500、ただし20%の確率で攻撃がクリティカルヒットとなるときがある。youはぞろ目(111とか222とか999まで)の場合はロトの剣を取得する。
攻撃回数無限で全てクリティカルヒットになります。
クリティカルヒットは攻撃力X2です。さてプログラムをやっていくか。"
*ただし、ロトの剣は勇者しか使えない。
”まずギルガメッシュっていう名前のenemy
ラスボスの名前はenemyとする。ボスのHPは5万。
ボスは基本的に何もしません、できません。これやるとさすがに面倒なのでw
基本的にボスは攻撃しません。(面倒だからw)
一方的になかまあつめてボコすw”
*ロトの剣で攻撃したら攻撃力が1.5倍あがります。*
**癒しの穂。食べたら防御力と賢さがあがります**
ロトの剣の出現条件は3並びで一つ食べることができます。
例えば111攻撃とか222攻撃とか333攻撃とか〜999まで。
次の発言からコードを書いていく。
ニーズあるか?
2024/10/09(水) 01:22:59.53ID:YvVjSPhZ
プログラミングする以前に読むのが面倒くさい
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況