プログラミングのお題スレです。
【出題と回答例】
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/
プログラミングのお題スレ Part22
1デフォルトの名無しさん
2023/08/03(木) 13:52:13.20ID:/xW45k0z269
2023/08/11(金) 02:38:50.64ID:4P/NDj/+ スレが伸びているので何かと思えば、オレほか一部の回答者がsortを使ったのが
そんなに気に入らなかったか、気に障ったか、
ざまぁみろw としか言いようがないが
後出しでケチつけてるのは出題者じゃないようだが
そしたらsortも、そしてminもあえて使わないバージョン、
書き方はいろいろあると思うけど:
>>3 Perl5
use List::Util 'first';
for (<DATA>) {
my %h = map{lc $_ => 1} /([A-Za-z])/g;
$a[length $_] = $_ if 26 == keys %h;
}
print first{defined} @a;
__DATA__
The quick brown fox jumps over a lazy dog.
The jay, pig, fox, zebra and my wolves quack!
Pack my box with seven dozen liquor jugs.
The horse, pig, fox, zebra and my wolves quack!
Jackdaws love my small sphinx of quartz.
Jackdaws love my big sphinx of quartz.
The quick brown fox jumps over a lazy cat.
Pack my box with five dozen liquor jugs.
実行結果
~ $ perl 22_3_az26_a.pl
Jackdaws love my big sphinx of quartz.
そんなに気に入らなかったか、気に障ったか、
ざまぁみろw としか言いようがないが
後出しでケチつけてるのは出題者じゃないようだが
そしたらsortも、そしてminもあえて使わないバージョン、
書き方はいろいろあると思うけど:
>>3 Perl5
use List::Util 'first';
for (<DATA>) {
my %h = map{lc $_ => 1} /([A-Za-z])/g;
$a[length $_] = $_ if 26 == keys %h;
}
print first{defined} @a;
__DATA__
The quick brown fox jumps over a lazy dog.
The jay, pig, fox, zebra and my wolves quack!
Pack my box with seven dozen liquor jugs.
The horse, pig, fox, zebra and my wolves quack!
Jackdaws love my small sphinx of quartz.
Jackdaws love my big sphinx of quartz.
The quick brown fox jumps over a lazy cat.
Pack my box with five dozen liquor jugs.
実行結果
~ $ perl 22_3_az26_a.pl
Jackdaws love my big sphinx of quartz.
2023/08/11(金) 02:52:08.14ID:45O+1i6X
そう、haskellの評価戦略はcall by need (の一種) で必要に応じて展開される、head . sort では 「sortした後の最初の項」を求めているのでそれを出すための必要最小限の事しかしない
件のData.Listにおけるsortでは
①与えられた列を1回目のバスで広義単調増大列いくつかに分割する、コストはO(n)
②できた列を2つずつマージして広義単調増大列の個数を半分にする、全部やればコストはO(n)
③②を列の数が1になるまで繰り返す、コストはO(log(n))
で全部の処理を要求してもO(nlog(n))でいわゆるクイックソートと同じコスト
しかしheadがこのsortの処理を呼ぶ時にはmergeする2列の中の最小値だけ残されてあとは捨てられる、なので最初の①の結果が最悪のケース、長さ1の列がn個できた場合でもmerge処理は最大n-1回だけ行われて終了する、すなわち事実上minimumと一緒
じゃあminimumBy ( on length )でいいじゃんという話なのだけど「遅延評価を利用すればほとんどコストレスでminimumByと同様の事ができる」というのがHaskellの面白いところ
なのでそっちを採用
これは遅延評価の文化に慣れてないと中々わからない
件のData.Listにおけるsortでは
①与えられた列を1回目のバスで広義単調増大列いくつかに分割する、コストはO(n)
②できた列を2つずつマージして広義単調増大列の個数を半分にする、全部やればコストはO(n)
③②を列の数が1になるまで繰り返す、コストはO(log(n))
で全部の処理を要求してもO(nlog(n))でいわゆるクイックソートと同じコスト
しかしheadがこのsortの処理を呼ぶ時にはmergeする2列の中の最小値だけ残されてあとは捨てられる、なので最初の①の結果が最悪のケース、長さ1の列がn個できた場合でもmerge処理は最大n-1回だけ行われて終了する、すなわち事実上minimumと一緒
じゃあminimumBy ( on length )でいいじゃんという話なのだけど「遅延評価を利用すればほとんどコストレスでminimumByと同様の事ができる」というのがHaskellの面白いところ
なのでそっちを採用
これは遅延評価の文化に慣れてないと中々わからない
2023/08/11(金) 07:58:17.97ID:vOTsx3Ge
>>25
そちらのsortはO(nlog(n))なのでダメですね
そちらのsortはO(nlog(n))なのでダメですね
299
2023/08/11(金) 08:37:47.88ID:4P/NDj/+ O(nlog(n))がダメかどうかは、データの規模および実行時間による
2023/08/11(金) 09:12:59.75ID:BG0MJIEb
あかん、通じてないね
時間の無駄やった
時間の無駄やった
2023/08/11(金) 09:22:47.99ID:HI+ykM5H
Perlな人の短く書ければよいだけで計算量とか知らないだろうから仕方ないと思うよ
しかしHaskellな人がsortを何箇所も使っているのは驚いた
head . sort以外のsortはあかんね
しかしHaskellな人がsortを何箇所も使っているのは驚いた
head . sort以外のsortはあかんね
32デフォルトの名無しさん
2023/08/11(金) 09:27:54.00ID:vdwKG93K お前ら賢いんだから自分も疑え
33デフォルトの名無しさん
2023/08/11(金) 14:03:26.02ID:v1edpQDw doubt
3417
2023/08/11(金) 16:34:17.24ID:j3k4ZyED 俺は Perl で書いたやつも sort 使わず >>4,5 と同じやり方にした。
一番短い文を最後に出すだけで良いなら sort やる必要ないよね。
何らかの制約があってそうしなければ出来ないとか、使っても思い切り最適化されて最終的に同じ動きになるというなら使うかも知れないが。
一番短い文を最後に出すだけで良いなら sort やる必要ないよね。
何らかの制約があってそうしなければ出来ないとか、使っても思い切り最適化されて最終的に同じ動きになるというなら使うかも知れないが。
35デフォルトの名無しさん
2023/08/11(金) 17:25:08.27ID:I5t9Gg6x 遅延評価は馴染みない人にはわからんからしょうがない
2023/08/11(金) 17:41:01.68ID:Nevl7mZs
Haskell版で問題にされてるのは
遅延評価でO(n)となるhead $ sort部分ではなく
O(nlog(n))のsortが別途あること
遅延評価でO(n)となるhead $ sort部分ではなく
O(nlog(n))のsortが別途あること
2023/08/11(金) 22:35:55.39ID:H5Y2+fuz
38デフォルトの名無しさん
2023/08/14(月) 19:55:41.01ID:KSpEuPpD マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
マサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲマサナヲ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
ヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマヲナサマ
39デフォルトの名無しさん
2023/08/14(月) 20:16:21.84ID:29MXQOm3 >>38
Java
public class Main {
public static void main(String[] args) {
System.out.println(
"マサナヲ".repeat(8).concat("\n").repeat(4).concat("\n")
.concat("ヲナサマ".repeat(8).concat("\n").repeat(4).concat("\n"))
.repeat(2));
}
}
Java
public class Main {
public static void main(String[] args) {
System.out.println(
"マサナヲ".repeat(8).concat("\n").repeat(4).concat("\n")
.concat("ヲナサマ".repeat(8).concat("\n").repeat(4).concat("\n"))
.repeat(2));
}
}
40デフォルトの名無しさん
2023/08/15(火) 16:29:06.61ID:eu+UdA0l このサイトより
http://agora.ex.nii.ac.jp/digital-typhoon/
2023/8/1/0/0 から 2023/8/16/23/0 まで
表示日時を変更しながら1時間毎の静止気象衛星画像(地球)を収集し
(衛星画像 は 可視光 2048x2048 程度 512x512 等も可 起動オプションで指定出来るとボーナス特典)
gif animation または png animation ファイルに変換せよ
例
8/14/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081315.globe.1.jpg
8/15/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081415.globe.1.jpg
8/15/15/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081505.globe.1.jpg
http://agora.ex.nii.ac.jp/digital-typhoon/
2023/8/1/0/0 から 2023/8/16/23/0 まで
表示日時を変更しながら1時間毎の静止気象衛星画像(地球)を収集し
(衛星画像 は 可視光 2048x2048 程度 512x512 等も可 起動オプションで指定出来るとボーナス特典)
gif animation または png animation ファイルに変換せよ
例
8/14/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081315.globe.1.jpg
8/15/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081415.globe.1.jpg
8/15/15/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081505.globe.1.jpg
2023/08/15(火) 23:36:55.46ID:GhE5EH0z
蟻人間がコテハン外したのかな
2023/08/16(水) 10:34:21.25ID:tgyEZLGb
可視光より赤外線の方が雲はきれいだけど
可視光は影が毎日くるくる回るからこっちはこっちで面白いね
可視光は影が毎日くるくる回るからこっちはこっちで面白いね
439
2023/08/16(水) 13:32:44.58ID:vjpqg3x7 >>40 bash、curl および GraphicsMagick の convert コマンドを使用。動作確認したOSはUbuntu 20.04LTS。数百枚のjpegからgifへのconvertには多少時間がかかります。
オプション -h または --highres を指定すると 2048x2048、オプション無しあるいは -l または --lowreso を指定すると 512x512、なおボーナスはスイス銀行の秘密口座に。
※見易くするためインデントは全角スペースに置換してあります。8月16日23時まで取得するようにしているがまだ無い将来の画像は含まない。
res='512x512' # default
OPT=`getopt -o hl -l highreso,lowreso -- "$@"`
eval set -- "$OPT"
while true; do
case "$1" in
-h | --highreso)
res='2048x2048'
shift ;;
-l | --lowreso)
res='512x512'
shift ;;
--)
shift
break ;;
esac
done
dir=$(mktemp -d TmpDir.XXXXXX)
for d in $(seq -w 01 16); do
for h in $(seq -w 0 23); do
dh="$d$h"
file="HMW92308${dh}.globe.1.jpg"
url="http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/${res}/${file}"
echo $url; curl -f -s -R -o "$dir/$file" $url
done
done
#set -x
time convert $(ls $dir/*.jpg) TyphoonAime${res}.gif
ls -o TyphoonAime${res}.gif
オプション -h または --highres を指定すると 2048x2048、オプション無しあるいは -l または --lowreso を指定すると 512x512、なおボーナスはスイス銀行の秘密口座に。
※見易くするためインデントは全角スペースに置換してあります。8月16日23時まで取得するようにしているがまだ無い将来の画像は含まない。
res='512x512' # default
OPT=`getopt -o hl -l highreso,lowreso -- "$@"`
eval set -- "$OPT"
while true; do
case "$1" in
-h | --highreso)
res='2048x2048'
shift ;;
-l | --lowreso)
res='512x512'
shift ;;
--)
shift
break ;;
esac
done
dir=$(mktemp -d TmpDir.XXXXXX)
for d in $(seq -w 01 16); do
for h in $(seq -w 0 23); do
dh="$d$h"
file="HMW92308${dh}.globe.1.jpg"
url="http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/${res}/${file}"
echo $url; curl -f -s -R -o "$dir/$file" $url
done
done
#set -x
time convert $(ls $dir/*.jpg) TyphoonAime${res}.gif
ls -o TyphoonAime${res}.gif
459
2023/08/16(水) 19:12:35.95ID:y9YJABkH >>43 これだと、scriptを実行するたびに全てのjpegファイルをtemporaryディレクトリにdownloadするためサーバの負荷の面で行儀がよくないので、
ディレクリは TyphoonJpegDir512x512 または TyphoonJpegDir2048x2048 で固定とし、未取得のjpegがあればdownloadするように直すわ。
res='512x512' # default
OPT=`getopt -o hl -l highreso,lowreso -- "$@"`
eval set -- "$OPT"
while true; do
case "$1" in
-h | --highreso)
res='2048x2048'
shift ;;
-l | --lowreso)
res='512x512'
shift ;;
--)
shift
break ;;
esac
done
dir=./TyphoonJpegDir${res}
for d in $(seq -w 01 16); do
for h in $(seq -w 0 23); do
file="HMW92308${d}${h}.globe.1.jpg"
url="http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/${res}/${file}"
[ -f $dir/$file ] || { echo $url; curl -f -s -R -o "$dir/$file" $url; }
done
done
#set -x
time convert $(ls $dir/*.jpg) TyphoonAime${res}.gif
ls -o TyphoonAime${res}.gif
※見やすくするためインデントは全角スペースに置換してあります。
ディレクリは TyphoonJpegDir512x512 または TyphoonJpegDir2048x2048 で固定とし、未取得のjpegがあればdownloadするように直すわ。
res='512x512' # default
OPT=`getopt -o hl -l highreso,lowreso -- "$@"`
eval set -- "$OPT"
while true; do
case "$1" in
-h | --highreso)
res='2048x2048'
shift ;;
-l | --lowreso)
res='512x512'
shift ;;
--)
shift
break ;;
esac
done
dir=./TyphoonJpegDir${res}
for d in $(seq -w 01 16); do
for h in $(seq -w 0 23); do
file="HMW92308${d}${h}.globe.1.jpg"
url="http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/${res}/${file}"
[ -f $dir/$file ] || { echo $url; curl -f -s -R -o "$dir/$file" $url; }
done
done
#set -x
time convert $(ls $dir/*.jpg) TyphoonAime${res}.gif
ls -o TyphoonAime${res}.gif
※見やすくするためインデントは全角スペースに置換してあります。
4617
2023/08/17(木) 00:52:29.22ID:YACPkQ1f >>40
Kotlin
ただし paiza.io のサイトの都合で大きい画像の出力がうまく行かないのと時間が掛かるとタイムアウトしてしまうので、
それらを避けるために 2023/08/15~2023/08/16 の8時間間隔(0, 8, 16 時)の画像を収集して 120x120 の大きさに
変更してアニメーションGIFにして出力するようにした。その時に HTML で <img src="data:image/gif;base64,...">
で埋め込んでいるのでHTMLモードで表示させるとブラウザに画像が表示される。スマホでも見てみたがちゃんと
動いている画像で表示された。
https://paiza.io/projects/w-fOIVbPGuSPh1_DJTSatA
Kotlin
ただし paiza.io のサイトの都合で大きい画像の出力がうまく行かないのと時間が掛かるとタイムアウトしてしまうので、
それらを避けるために 2023/08/15~2023/08/16 の8時間間隔(0, 8, 16 時)の画像を収集して 120x120 の大きさに
変更してアニメーションGIFにして出力するようにした。その時に HTML で <img src="data:image/gif;base64,...">
で埋め込んでいるのでHTMLモードで表示させるとブラウザに画像が表示される。スマホでも見てみたがちゃんと
動いている画像で表示された。
https://paiza.io/projects/w-fOIVbPGuSPh1_DJTSatA
2023/08/18(金) 10:27:20.40ID:Rd3M1fjh
可視光は globe.0 だな
しかも夜のデータ無いやん
しかも夜のデータ無いやん
2023/08/18(金) 11:07:33.13ID:wx26N4AH
>>40
UTC で答えてる人が多いみたいだけど
>例
>8/14/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081315.globe.1.jpg
JST ですよね
UTC で答えてる人が多いみたいだけど
>例
>8/14/0/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081315.globe.1.jpg
JST ですよね
49デフォルトの名無しさん
2023/08/18(金) 17:11:49.56ID:TT1gR8pP 過去未来100年(幅201年)の範囲で
2023年とカレンダーの曜日が一致する年を全て出力せよ
また任意の指定年の前後100年で同じ動作をする(閏年も考慮)ように改変せよ
2023年とカレンダーの曜日が一致する年を全て出力せよ
また任意の指定年の前後100年で同じ動作をする(閏年も考慮)ように改変せよ
50デフォルトの名無しさん
2023/08/18(金) 20:03:41.92ID:Bxqhk52951デフォルトの名無しさん
2023/08/19(土) 00:14:13.53ID:Za4r2XUP2023/08/19(土) 02:12:13.34ID:7swIlm9f
6,11,11,6,11,11,・・・なんでこうなうの?
2023/08/19(土) 10:40:53.03ID:7swIlm9f
>>48
JSTだとしたら
>8/15/15/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081505.globe.1.jpg
は
8/15/14/0
じゃないかな
夏時間?
JSTだとしたら
>8/15/15/0 http://agora.ex.nii.ac.jp/digital-typhoon/globe/color/2023/512x512/HMW923081505.globe.1.jpg
は
8/15/14/0
じゃないかな
夏時間?
54デフォルトの名無しさん
2023/08/20(日) 20:19:24.17ID:T0IVLETo >>52
365と366を7で割った余りは1と2なので、平年には翌年の元日の曜日が1つ進み、閏年には2つ進む。
100の倍数の年の例外を除けば、曜日の進みは1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, ...のように
1, 1, 1, 2というパターンの繰り返しになる。
パターン1, 1, 1, 2のうちの最初の1の年から始めて、何年後に曜日の進みの累積が7の倍数かつ
その年が閏年でなくなるかを順々に求めれば6, 11, 11年後となり、ここでパターン1, 1, 1, 2の
うちの最初の1の年に戻るので、以降は6, 11, 11年後というパターンの繰り返しになる。
┌──────────┐
│ ↓
@@@❷@@@❷@@@❷@@@❷@@@❷@@@❷@@@❷@@@❷
│ ↑ │ ↑
└─────┘ └──────────┘
365と366を7で割った余りは1と2なので、平年には翌年の元日の曜日が1つ進み、閏年には2つ進む。
100の倍数の年の例外を除けば、曜日の進みは1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, ...のように
1, 1, 1, 2というパターンの繰り返しになる。
パターン1, 1, 1, 2のうちの最初の1の年から始めて、何年後に曜日の進みの累積が7の倍数かつ
その年が閏年でなくなるかを順々に求めれば6, 11, 11年後となり、ここでパターン1, 1, 1, 2の
うちの最初の1の年に戻るので、以降は6, 11, 11年後というパターンの繰り返しになる。
┌──────────┐
│ ↓
@@@❷@@@❷@@@❷@@@❷@@@❷@@@❷@@@❷@@@❷
│ ↑ │ ↑
└─────┘ └──────────┘
55蟻人間 ◆T6xkBnTXz7B0
2023/08/20(日) 21:28:53.42ID:KEiNPJgB お題: お風呂の準備。
容積225Lの浴槽に適温39度のお湯200Lを用意したい。
次の2つのスイッチのON/OFFを切り替えてお湯を用意するプログラムを作れ。
スイッチ1: これをONにすると浴槽に水温20度の水を分速10Lで投入する。
スイッチ2: これをONにすると浴槽の水を800ワットの電熱線で加熱する。
ただし、浴槽に容積の1/2以上の水またはお湯が入っていないときは、空焚き防止のため、加熱しないものとする。
放熱は考慮しなくてもよい。
出力例)
時刻??: スイッチ1をONにしました。
時刻??: スイッチ2をONにしました。
時刻??: お風呂ができました。
時刻??: スイッチ1をOFFにしました。
時刻??: スイッチ2をOFFにしました。
容積225Lの浴槽に適温39度のお湯200Lを用意したい。
次の2つのスイッチのON/OFFを切り替えてお湯を用意するプログラムを作れ。
スイッチ1: これをONにすると浴槽に水温20度の水を分速10Lで投入する。
スイッチ2: これをONにすると浴槽の水を800ワットの電熱線で加熱する。
ただし、浴槽に容積の1/2以上の水またはお湯が入っていないときは、空焚き防止のため、加熱しないものとする。
放熱は考慮しなくてもよい。
出力例)
時刻??: スイッチ1をONにしました。
時刻??: スイッチ2をONにしました。
時刻??: お風呂ができました。
時刻??: スイッチ1をOFFにしました。
時刻??: スイッチ2をOFFにしました。
5617
2023/08/20(日) 22:57:39.22ID:pbHEs6OP >>49
Kotlin
折角なので Iterator で作った。(でも AbstractIterator クラス使ったので特に苦労はしていない)
https://paiza.io/projects/v1X96MyvBFn0N4z9X-9gkw
Kotlin
折角なので Iterator で作った。(でも AbstractIterator クラス使ったので特に苦労はしていない)
https://paiza.io/projects/v1X96MyvBFn0N4z9X-9gkw
5717
2023/08/20(日) 23:07:16.25ID:pbHEs6OP >>55
800Wの電熱線で加熱するとどれだけの量の水がどのぐらいの時間で1度上がるか、など、基本的な事が分からない。
800Wの電熱線で加熱するとどれだけの量の水がどのぐらいの時間で1度上がるか、など、基本的な事が分からない。
2023/08/21(月) 05:17:48.42ID:9NybdpKD
59デフォルトの名無しさん
2023/08/21(月) 10:53:53.65ID:qNeGin4f >>58へのお題
指定した年とその後(またはそれ以前に)同じカレンダーになる年を100個求めよ
指定した年とその後(またはそれ以前に)同じカレンダーになる年を100個求めよ
2023/08/21(月) 12:55:28.09ID:tqXtwiP4
// Rust 双方向イテレータ版
struct SameCalendarYear(u32);
impl Iterator for SameCalendarYear {
type Item = u32;
fn next(&mut self) -> Option<u32> {
common_next(self.0, false).map(|year| { self.0 = year; year })
}
}
impl DoubleEndedIterator for SameCalendarYear {
fn next_back(&mut self) -> Option<u32> {
common_next(self.0, true).map(|year| { self.0 = year; year })
}
}
fn common_next(start_year: u32, is_before: bool) -> Option<u32> {
let mut day = 0;
let mut year = start_year;
while year > 0 {
if is_before { year -= 1; }
day += 1 + leap(year);
if day >= 7 { day -= 7; }
if !is_before { year += 1; }
if day == 0 && leap(year) == leap(start_year) {
return Some(year);
}
}
None
}
fn leap(year: u32) -> u32 {
(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) as u32
}
struct SameCalendarYear(u32);
impl Iterator for SameCalendarYear {
type Item = u32;
fn next(&mut self) -> Option<u32> {
common_next(self.0, false).map(|year| { self.0 = year; year })
}
}
impl DoubleEndedIterator for SameCalendarYear {
fn next_back(&mut self) -> Option<u32> {
common_next(self.0, true).map(|year| { self.0 = year; year })
}
}
fn common_next(start_year: u32, is_before: bool) -> Option<u32> {
let mut day = 0;
let mut year = start_year;
while year > 0 {
if is_before { year -= 1; }
day += 1 + leap(year);
if day >= 7 { day -= 7; }
if !is_before { year += 1; }
if day == 0 && leap(year) == leap(start_year) {
return Some(year);
}
}
None
}
fn leap(year: u32) -> u32 {
(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) as u32
}
2023/08/21(月) 12:57:26.59ID:tqXtwiP4
>>59
指定した年と同じカレンダーの年を前後 n 個表示
(長くなるので今回は10個だけ表示)
fn main() {
let n = 10;
for year in [2000, 2023, 2024, 2025, 2100] {
println!("{year}年より前: {:?}", SameCalendarYear(year).rev().take(n).collect::<Vec<_>>());
println!("{year}年より後: {:?}", SameCalendarYear(year).take(n).collect::<Vec<_>>());
}
}
このRust公式の実行環境で実行やコード編集ができます
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=5e5a518120f75351ca5ff5fdd0bf4d8c
// 実行結果
2000年より前: [1972, 1944, 1916, 1876, 1848, 1820, 1780, 1752, 1724, 1684]
2000年より後: [2028, 2056, 2084, 2124, 2152, 2180, 2220, 2248, 2276, 2316]
2023年より前: [2017, 2006, 1995, 1989, 1978, 1967, 1961, 1950, 1939, 1933]
2023年より後: [2034, 2045, 2051, 2062, 2073, 2079, 2090, 2102, 2113, 2119]
2024年より前: [1996, 1968, 1940, 1912, 1872, 1844, 1816, 1776, 1748, 1720]
2024年より後: [2052, 2080, 2120, 2148, 2176, 2216, 2244, 2272, 2312, 2340]
2025年より前: [2014, 2003, 1997, 1986, 1975, 1969, 1958, 1947, 1941, 1930]
2025年より後: [2031, 2042, 2053, 2059, 2070, 2081, 2087, 2098, 2110, 2121]
2100年より前: [2094, 2083, 2077, 2066, 2055, 2049, 2038, 2027, 2021, 2010]
2100年より後: [2106, 2117, 2123, 2134, 2145, 2151, 2162, 2173, 2179, 2190]
指定した年と同じカレンダーの年を前後 n 個表示
(長くなるので今回は10個だけ表示)
fn main() {
let n = 10;
for year in [2000, 2023, 2024, 2025, 2100] {
println!("{year}年より前: {:?}", SameCalendarYear(year).rev().take(n).collect::<Vec<_>>());
println!("{year}年より後: {:?}", SameCalendarYear(year).take(n).collect::<Vec<_>>());
}
}
このRust公式の実行環境で実行やコード編集ができます
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=5e5a518120f75351ca5ff5fdd0bf4d8c
// 実行結果
2000年より前: [1972, 1944, 1916, 1876, 1848, 1820, 1780, 1752, 1724, 1684]
2000年より後: [2028, 2056, 2084, 2124, 2152, 2180, 2220, 2248, 2276, 2316]
2023年より前: [2017, 2006, 1995, 1989, 1978, 1967, 1961, 1950, 1939, 1933]
2023年より後: [2034, 2045, 2051, 2062, 2073, 2079, 2090, 2102, 2113, 2119]
2024年より前: [1996, 1968, 1940, 1912, 1872, 1844, 1816, 1776, 1748, 1720]
2024年より後: [2052, 2080, 2120, 2148, 2176, 2216, 2244, 2272, 2312, 2340]
2025年より前: [2014, 2003, 1997, 1986, 1975, 1969, 1958, 1947, 1941, 1930]
2025年より後: [2031, 2042, 2053, 2059, 2070, 2081, 2087, 2098, 2110, 2121]
2100年より前: [2094, 2083, 2077, 2066, 2055, 2049, 2038, 2027, 2021, 2010]
2100年より後: [2106, 2117, 2123, 2134, 2145, 2151, 2162, 2173, 2179, 2190]
62蟻人間 ◆T6xkBnTXz7B0
2023/08/21(月) 15:10:32.39ID:GU1DZq8L63デフォルトの名無しさん
2023/08/21(月) 22:02:18.08ID:s7o0Gu1A2023/08/24(木) 05:04:40.60ID:UkV1PQmo
お題:2Dゲームのスクロール処理
整数の二次元配列(高さ50, 横幅100)上にランダムに整数1〜9が200個配置される。
この配列を高さ20, 横幅40の矩形領域に切り取って表示したい。キーボードの入力(l, r, t, b)で矩形領域を移動させ切り取る領域を変化させよ。
整数の二次元配列(高さ50, 横幅100)上にランダムに整数1〜9が200個配置される。
この配列を高さ20, 横幅40の矩形領域に切り取って表示したい。キーボードの入力(l, r, t, b)で矩形領域を移動させ切り取る領域を変化させよ。
65デフォルトの名無しさん
2023/08/24(木) 08:57:28.75ID:a6n854uv >>64
試しに自分で書いてどんなプログラムになるのか見せてくれ
試しに自分で書いてどんなプログラムになるのか見せてくれ
66デフォルトの名無しさん
2023/08/24(木) 22:51:17.82ID:hcnR5QOK >>64
PowerShell (等幅フォント限定。最初は一番左上の領域が表示される。qキーで終了。Ubuntu版ではカーソルが消えない)
$a = random (1..9999) -count 200 |% {$_ % 9 + 1}
$b = random (0..4999) -count 200
$c = [char[][]](,(," " * 100) * 50)
0..199 |% {$c[[Math]::Floor($b[$_] / 100)][$b[$_] % 100] = [string]$a[$_]}
$L = 0..49 |% {-join $c[$_]}
$UI = $Host.UI.RawUI
$p, $s = $UI.CursorPosition, $UI.CursorSize
$p.y = [Math]::Min($p.y, $UI.BufferSize.Height - 23)
$x = $y = 0
$border = "+" + "-" * 40 + "+"
while ($true) {
try {$UI.CursorSize = 0} catch {}
$UI.CursorPosition = $p
$border
0..19 |% {"|" + $L[$y + $_].SubString($x, 40) + "|"}
$border
switch ($UI.ReadKey(6).Character) {
"l" {if ($x -gt +0) {$x--}}
"r" {if ($x -lt 60) {$x++}}
"t" {if ($y -gt +0) {$y--}}
"b" {if ($y -lt 30) {$y++}}
"q" {try {$UI.CursorSize = $s} catch {} return}
}
}
PowerShell (等幅フォント限定。最初は一番左上の領域が表示される。qキーで終了。Ubuntu版ではカーソルが消えない)
$a = random (1..9999) -count 200 |% {$_ % 9 + 1}
$b = random (0..4999) -count 200
$c = [char[][]](,(," " * 100) * 50)
0..199 |% {$c[[Math]::Floor($b[$_] / 100)][$b[$_] % 100] = [string]$a[$_]}
$L = 0..49 |% {-join $c[$_]}
$UI = $Host.UI.RawUI
$p, $s = $UI.CursorPosition, $UI.CursorSize
$p.y = [Math]::Min($p.y, $UI.BufferSize.Height - 23)
$x = $y = 0
$border = "+" + "-" * 40 + "+"
while ($true) {
try {$UI.CursorSize = 0} catch {}
$UI.CursorPosition = $p
$border
0..19 |% {"|" + $L[$y + $_].SubString($x, 40) + "|"}
$border
switch ($UI.ReadKey(6).Character) {
"l" {if ($x -gt +0) {$x--}}
"r" {if ($x -lt 60) {$x++}}
"t" {if ($y -gt +0) {$y--}}
"b" {if ($y -lt 30) {$y++}}
"q" {try {$UI.CursorSize = $s} catch {} return}
}
}
67デフォルトの名無しさん
2023/08/25(金) 00:19:01.99ID:P3glK3pZ お題:ウィンドウのアラインメント処理
マウスの座標の変化からウインドウを描画すべき座標を計算したい。
ただし変形する形は縦横4方向、斜め4方向の8パターンとし、寄せた方向に幅が1/2となること。
マウスの座標の変化からウインドウを描画すべき座標を計算したい。
ただし変形する形は縦横4方向、斜め4方向の8パターンとし、寄せた方向に幅が1/2となること。
68デフォルトの名無しさん
2023/08/25(金) 14:02:15.09ID:5+gJach+ >>64-65
OpenCVのROI便利だよな
OpenCVのROI便利だよな
2023/08/26(土) 14:14:02.40ID:EQIr/PqP
世界で最初の月曜日ってどうやって決まったの?
7017
2023/08/26(土) 14:42:38.00ID:Wr5tcJsi 曜日はシュメール人が使い始めたらしいので、お近くのシュメール人に聞きください。
2023/08/26(土) 20:03:48.42ID:LJcWLtrE
文字列Sの中に含まれる回文をすべて列挙ってどうやったらいいですかね(*_*)
aとかbみたいな一文字でも回文とみなしますです
文字列Sは1文字以上100文字以下で、半角英字であることがわかってます
とんでもない計算量になる気がするのですが、鮮やかなやりかたってないものかと…トホ(ヽ´ω`)
aとかbみたいな一文字でも回文とみなしますです
文字列Sは1文字以上100文字以下で、半角英字であることがわかってます
とんでもない計算量になる気がするのですが、鮮やかなやりかたってないものかと…トホ(ヽ´ω`)
7217
2023/08/26(土) 22:26:37.90ID:Wr5tcJsi73蟻人間 ◆T6xkBnTXz7B0
2023/08/26(土) 23:04:31.69ID:JYg5slq9 回文の長さに制限があるから、回文の長さで場合分けすれば、全部列挙可能。
2023/08/26(土) 23:09:39.72ID:jGmIYD91
>>72
途中のもぜんぶっす…
含まれる回文、ひとつのこらず出力です(;´∀`)
たとえAとかBみたいな一文字でも回文と定義します
なのでAとかXも抜き出します٩(′д‵)۶
で、一文字目にAがあって、5文字目にもAがあるじゃないですか?こういった場合は、どっちも出力しちゃって大丈夫です!
重複された出力が行われるのは問題ないんです!
ただ、「過去にすでにその分の出力が行われていた場合、重複した出力を再度行わない」というやりかたでもし計算量が飛躍的に下がるということであれば、そのやりかたが知りたいというのもまああります(*_*;
重複する出力をするかしないか、それはどちらでもオケーです
全パターンチェックするようにループ回すならとりあえず理屈ではできると思うんですが、計算量がとんでもないことになりそうな感じで、ちょっとお手上げでした/(^o^)\
途中のもぜんぶっす…
含まれる回文、ひとつのこらず出力です(;´∀`)
たとえAとかBみたいな一文字でも回文と定義します
なのでAとかXも抜き出します٩(′д‵)۶
で、一文字目にAがあって、5文字目にもAがあるじゃないですか?こういった場合は、どっちも出力しちゃって大丈夫です!
重複された出力が行われるのは問題ないんです!
ただ、「過去にすでにその分の出力が行われていた場合、重複した出力を再度行わない」というやりかたでもし計算量が飛躍的に下がるということであれば、そのやりかたが知りたいというのもまああります(*_*;
重複する出力をするかしないか、それはどちらでもオケーです
全パターンチェックするようにループ回すならとりあえず理屈ではできると思うんですが、計算量がとんでもないことになりそうな感じで、ちょっとお手上げでした/(^o^)\
2023/08/26(土) 23:20:42.48ID:jGmIYD91
たとえば文字列Sがabbbaだとすると、すくなくともa,b,bb,bbb.abbbaが最低一回は出力される必要があります
できればaやbが複数回出力されず一回しか出力されないほうがいいですが、必須ではないです
できればaやbが複数回出力されず一回しか出力されないほうがいいですが、必須ではないです
76蟻人間 ◆T6xkBnTXz7B0
2023/08/26(土) 23:29:51.32ID:JYg5slq9 >>71 C++
#include <stdio.h>
bool is_kaibun(const char *str, size_t len)
{
for (size_t i = 0; i < len/2; i++)
if (str[i] != str[len - i - 1]) return false;
return true;
}
void detect_kaibun(const char *str, size_t len)
{
for (size_t klen = 1; klen <= len; klen++)
{
for (size_t i = 0; i < len - klen + 1; i++)
if (is_kaibun(str + i, klen))
printf("%*s\n", (int)klen, str + i);
}
}
int main(void)
{
detect_kaibun("ABCBCXC", 7);
return 0;
}
#include <stdio.h>
bool is_kaibun(const char *str, size_t len)
{
for (size_t i = 0; i < len/2; i++)
if (str[i] != str[len - i - 1]) return false;
return true;
}
void detect_kaibun(const char *str, size_t len)
{
for (size_t klen = 1; klen <= len; klen++)
{
for (size_t i = 0; i < len - klen + 1; i++)
if (is_kaibun(str + i, klen))
printf("%*s\n", (int)klen, str + i);
}
}
int main(void)
{
detect_kaibun("ABCBCXC", 7);
return 0;
}
77蟻人間 ◆T6xkBnTXz7B0
2023/08/26(土) 23:37:32.47ID:JYg5slq92023/08/26(土) 23:40:14.43ID:jGmIYD91
>>77
ありがとうございます、ちょっとためしてみますm(_ _)m
ありがとうございます、ちょっとためしてみますm(_ _)m
2023/08/26(土) 23:44:49.05ID:M8vKemPr
2023/08/27(日) 00:17:21.22ID:3rRjeZjU
2023/08/27(日) 01:14:16.06ID:xDzSjAxc
>>76
こうすると計算量を減少できる
fn len_of_eq(s: &str, index: usize, even: usize) -> usize {
let mut len = 0;
for (p, q) in std::iter::zip(s[(index + even)..].chars(), s[0..=index].chars().rev()) {
if p != q {
break;
}
len += 1;
}
return len;
}
fn print_kaibun(s: &str) {
for index in 0..s.len() {
for even in 0..=1 {
for len in 1..=len_of_eq(s, index, even) {
let first = index + 1 - len;
let last = index + len - 1 + even;
println!("{first}~{last}: {}", &s[first..=last]);
}
}
}
}
fn main() {
print_kaibun("ABCBAXYZZYX");
}
こうすると計算量を減少できる
fn len_of_eq(s: &str, index: usize, even: usize) -> usize {
let mut len = 0;
for (p, q) in std::iter::zip(s[(index + even)..].chars(), s[0..=index].chars().rev()) {
if p != q {
break;
}
len += 1;
}
return len;
}
fn print_kaibun(s: &str) {
for index in 0..s.len() {
for even in 0..=1 {
for len in 1..=len_of_eq(s, index, even) {
let first = index + 1 - len;
let last = index + len - 1 + even;
println!("{first}~{last}: {}", &s[first..=last]);
}
}
}
}
fn main() {
print_kaibun("ABCBAXYZZYX");
}
2023/08/27(日) 01:16:42.56ID:xDzSjAxc
まずこの部分が最初のヒントで
>>それって例えば "ABCBAXYZZYX" だったら "ABCBA" と "XYZZYX" が抜き出せれば良いの?
>>途中の "BCB", "C", "YZZY", "ZZ" も抜き出すの?
>途中のもぜんぶっす…
最も長いものを抜き出せばその一部分はその中に含まれている
だから短いのが判明した時点で引き続き長いのも探索しないと多重に無駄に比較が行なわれてしまう
もう一つのポイントは回文は対称系で長さ奇数と偶数の二種類があること
長さ奇数「DCBABCD」と長さ偶数「DCBAABCD」どちらの場合も
比較は対称点となるAからのみ出発して比較していけばよくて
順方向&逆方向へ最長分を比較していけば上述の無駄な比較を減らせる
このような順番で見つかっていくことになる
>>81の実行結果
0~0: A
1~1: B
2~2: C
1~3: BCB
0~4: ABCBA
3~3: B
4~4: A
5~5: X
6~6: Y
7~7: Z
7~8: ZZ
6~9: YZZY
5~10: XYZZYX
8~8: Z
9~9: Y
10~10: X
>>それって例えば "ABCBAXYZZYX" だったら "ABCBA" と "XYZZYX" が抜き出せれば良いの?
>>途中の "BCB", "C", "YZZY", "ZZ" も抜き出すの?
>途中のもぜんぶっす…
最も長いものを抜き出せばその一部分はその中に含まれている
だから短いのが判明した時点で引き続き長いのも探索しないと多重に無駄に比較が行なわれてしまう
もう一つのポイントは回文は対称系で長さ奇数と偶数の二種類があること
長さ奇数「DCBABCD」と長さ偶数「DCBAABCD」どちらの場合も
比較は対称点となるAからのみ出発して比較していけばよくて
順方向&逆方向へ最長分を比較していけば上述の無駄な比較を減らせる
このような順番で見つかっていくことになる
>>81の実行結果
0~0: A
1~1: B
2~2: C
1~3: BCB
0~4: ABCBA
3~3: B
4~4: A
5~5: X
6~6: Y
7~7: Z
7~8: ZZ
6~9: YZZY
5~10: XYZZYX
8~8: Z
9~9: Y
10~10: X
8317
2023/08/27(日) 05:51:19.72ID:A+RJ0qtc >>80
ここはお題スレなのでクローズはない。
ここはお題スレなのでクローズはない。
8417
2023/09/07(木) 20:20:41.05ID:HlrfnodH2023/09/20(水) 14:42:58.26ID:I55f6i4N
お題
abc1.mp4 abc2.mp4 .. abc20.mp4があるとします
これを名前順でソートできるようにするため
abc001.mp4 abc002.mp4 ... abc020.mp4
とリネームしてください
abc1.mp4 abc2.mp4 .. abc20.mp4があるとします
これを名前順でソートできるようにするため
abc001.mp4 abc002.mp4 ... abc020.mp4
とリネームしてください
2023/09/20(水) 18:43:20.77ID:DIo9fsPi
コレでどーかぬ
#!/bin/bash
# ファイル名のプレフィックス
prefix="abc"
# ソート対象のファイルリストを取得
file_list=$(ls ${prefix}*.mp4 | sort)
# ファイルを001、002、...の形式にリネーム
counter=1
for file in $file_list; do
new_name=$(printf "${prefix}%03d.mp4" $counter)
mv "$file" "$new_name"
counter=$((counter + 1))
done
#!/bin/bash
# ファイル名のプレフィックス
prefix="abc"
# ソート対象のファイルリストを取得
file_list=$(ls ${prefix}*.mp4 | sort)
# ファイルを001、002、...の形式にリネーム
counter=1
for file in $file_list; do
new_name=$(printf "${prefix}%03d.mp4" $counter)
mv "$file" "$new_name"
counter=$((counter + 1))
done
2023/09/20(水) 18:50:38.69ID:I55f6i4N
いいだしっぺということで作ってきたら既に投稿が
printfするところは一緒ですね
bash,勉強になります
haskell
import Text.Printf
import System.IO
import System.Directory
import System.FilePath.Glob
import Data.List
import Control.Monad
kaku = ".mp4"
fn = "abc"
main = do
files <- glob (fn <> "*" <> kaku)
zipWithM_ (\a b -> renameFile a b) files (map f files)
where
f l =
let r1 = reverse $ takeWhile ((/=) '/') $ reverse l in
let r2 = (r1 \\ fn) \\ kaku in
fn <> printf "%03d" (read r2 :: Int) <> kaku
printfするところは一緒ですね
bash,勉強になります
haskell
import Text.Printf
import System.IO
import System.Directory
import System.FilePath.Glob
import Data.List
import Control.Monad
kaku = ".mp4"
fn = "abc"
main = do
files <- glob (fn <> "*" <> kaku)
zipWithM_ (\a b -> renameFile a b) files (map f files)
where
f l =
let r1 = reverse $ takeWhile ((/=) '/') $ reverse l in
let r2 = (r1 \\ fn) \\ kaku in
fn <> printf "%03d" (read r2 :: Int) <> kaku
2023/09/22(金) 11:23:46.58ID:R2SvRL0Z
お題:celeronで快適に動作するwebブラウザを作れ
899
2023/09/22(金) 16:53:16.55ID:8M97O6g7 >>85 Perl5
rename "abc$_.mp4", sprintf 'abc%03d.mp4',$_ for 1..20;
※abc1.mp4 abc2.mp4 .. abc20.mp4 があるとしています。
また abc001.mp4 abc002.mp4 ... abc020.mp4 は既存かのチェックは省いています。
rename "abc$_.mp4", sprintf 'abc%03d.mp4',$_ for 1..20;
※abc1.mp4 abc2.mp4 .. abc20.mp4 があるとしています。
また abc001.mp4 abc002.mp4 ... abc020.mp4 は既存かのチェックは省いています。
2023/09/22(金) 17:31:41.64ID:fCKJ4NGF
すごい簡潔ですね!perlすごい
これはワンライナーではないのでしょうか
#!/usr/bin/perl
..
としてperl rename.plを動かすと動きました
ファイルはこれ(bash)で用意できます
for i in {1..20}; do touch abc$i.mp4; done
これはワンライナーではないのでしょうか
#!/usr/bin/perl
..
としてperl rename.plを動かすと動きました
ファイルはこれ(bash)で用意できます
for i in {1..20}; do touch abc$i.mp4; done
2023/09/22(金) 20:45:10.11ID:CSDqgjJn
tcsh のバヤイわこうかぬ
foreach i (`seq 1 20`) # 1から20までの数値を生成
# ファイル名を生成し、touchコマンドでファイルを作成
set filename = "abc$i.mp4"
touch $filename
end
foreach i (`seq 1 20`) # 1から20までの数値を生成
# ファイル名を生成し、touchコマンドでファイルを作成
set filename = "abc$i.mp4"
touch $filename
end
9217
2023/09/24(日) 00:36:54.25ID:FZ40Ia2p9317
2023/09/24(日) 00:44:46.90ID:FZ40Ia2p 1~20を決め打ちして良いならもっと簡単にできたな。まあいいや。
2023/09/24(日) 01:16:14.31ID:nC1Pu7Ba
>>92
なかなかおもろいサイトやぬ
なかなかおもろいサイトやぬ
2023/09/24(日) 01:37:34.83ID:XDqOvN5B
96デフォルトの名無しさん
2023/09/26(火) 17:04:35.08ID:lhHS5sJh お題:32ビット浮動小数点数のnextafter()
32ビット精度(IEEE754のbinary32)の変数aを
64ビット精度(IEEE754のbinary64)の変数bに代入する。
ここで、nextafterf(a, 0)やnextafterf(a, 正の無限)などに相当する操作を
bに対して行え(bを32ビット浮動小数点数に戻すのは無しで)。
操作結果のoverflowやunderflowは考慮しなくてもよい。
32ビット精度(IEEE754のbinary32)の変数aを
64ビット精度(IEEE754のbinary64)の変数bに代入する。
ここで、nextafterf(a, 0)やnextafterf(a, 正の無限)などに相当する操作を
bに対して行え(bを32ビット浮動小数点数に戻すのは無しで)。
操作結果のoverflowやunderflowは考慮しなくてもよい。
2023/09/27(水) 11:02:54.03ID:Jpj1XONB
お題:日本語の文章が入力されるので「、」をカンマに、「。」を改行に変換せよ
98デフォルトの名無しさん
2023/09/27(水) 11:36:52.67ID:uGji0T93 Python
s = input()
s = s.replace("、", ",")
s = s.replace("。", "\n")
print(s)
s = input()
s = s.replace("、", ",")
s = s.replace("。", "\n")
print(s)
2023/09/27(水) 13:01:54.91ID:9Ywamwi5
Haskell
import Data.List.Utils
main = do
s <- getContents
putStrLn $ replace "。" "\n" $ replace "、" "," s
コンパイルはしてないので動かないかも
import Data.List.Utils
main = do
s <- getContents
putStrLn $ replace "。" "\n" $ replace "、" "," s
コンパイルはしてないので動かないかも
100デフォルトの名無しさん
2023/09/27(水) 20:48:13.39ID:hJUMqAFS101デフォルトの名無しさん
2023/09/28(木) 08:18:15.29ID:q8VwFY1b お題
文字列S=abcdefghij(10文字)が与えられて
配列[0,4,7]が与えられる
このときSの0番目を4番目、4番目を7番目、7番目を0番目に移動した文字列を出力するプログラムを書いてください
文字列S=abcdefghij(10文字)が与えられて
配列[0,4,7]が与えられる
このときSの0番目を4番目、4番目を7番目、7番目を0番目に移動した文字列を出力するプログラムを書いてください
102デフォルトの名無しさん
2023/09/28(木) 09:17:20.57ID:iiudb0JA103デフォルトの名無しさん
2023/09/28(木) 13:09:43.08ID:tckV2TlV >>101 Ruby
文字列S='abcdefghij'
配列=[0,4,7]
文字列 = 文字列S.dup
配列.zip( 配列.rotate ).each{|i,j| 文字列[i] = 文字列S[j] }
puts 文字列
文字列S='abcdefghij'
配列=[0,4,7]
文字列 = 文字列S.dup
配列.zip( 配列.rotate ).each{|i,j| 文字列[i] = 文字列S[j] }
puts 文字列
104蟻人間 ◆T6xkBnTXz7B0
2023/09/28(木) 13:15:33.53ID:eLIN3EHU お題: コンソールに指定したUTF-8文字列のQRコードを表示するプログラム。
105デフォルトの名無しさん
2023/09/28(木) 14:55:17.75ID:7+/lnWbq use std::io::{stdin, Read};
use std::error::Error;
use qrcode::QrCode;
fn read() -> Result<String, Box<dyn Error>> {
Ok(stdin().lock().bytes().map(|c| c.expect("char") as char).collect())
}
fn main() -> Result<(), Box<dyn Error>> {
let qr = QrCode::new(read()?.as_bytes())?;
let s = qr.render().light_color(' ').dark_color('#').build();
println!("{}", s);
Ok(())
}
use std::error::Error;
use qrcode::QrCode;
fn read() -> Result<String, Box<dyn Error>> {
Ok(stdin().lock().bytes().map(|c| c.expect("char") as char).collect())
}
fn main() -> Result<(), Box<dyn Error>> {
let qr = QrCode::new(read()?.as_bytes())?;
let s = qr.render().light_color(' ').dark_color('#').build();
println!("{}", s);
Ok(())
}
106蟻人間 ◆T6xkBnTXz7B0
2023/09/28(木) 21:17:30.48ID:yc7Vl2N1 お題: 指定されたフォントのひらがなの各文字について
ひらがなの線に囲まれて閉じた領域の個数を調べ、最もその個数の多い文字ベスト3を出力せよ。
ひらがなの線に囲まれて閉じた領域の個数を調べ、最もその個数の多い文字ベスト3を出力せよ。
107デフォルトの名無しさん
2023/09/28(木) 22:53:24.99ID:8VuS2PIw 自分でやれ
いやできないかすまん
いやできないかすまん
108デフォルトの名無しさん
2023/09/28(木) 22:59:15.05ID:isk1iJ0r pythonならcv2使ってやるかな
10917
2023/09/29(金) 10:58:18.12ID:eBy6R6wt >>97
bash のコマンドラインで以下のように入力すると標準入力から入力して「、」が「,」に、「。」が改行に変換されて標準出力に出力される。
(起動する環境は bash でなければならないということはないと思うが、他のシェルは確認していない)。
sed 's/、/,/g;s/。/\n/g'
もちろん日本語入出力可能な端末を使用して、尚且つ sed がその入力をまともに受け付けてくれなければちゃんと動かない。
bash のコマンドラインで以下のように入力すると標準入力から入力して「、」が「,」に、「。」が改行に変換されて標準出力に出力される。
(起動する環境は bash でなければならないということはないと思うが、他のシェルは確認していない)。
sed 's/、/,/g;s/。/\n/g'
もちろん日本語入出力可能な端末を使用して、尚且つ sed がその入力をまともに受け付けてくれなければちゃんと動かない。
110デフォルトの名無しさん
2023/09/29(金) 11:02:02.85ID:F8aJXNq9 お題: 指定されたフォントのひらがなの各文字について
ひらがなの線に囲まれて閉じた領域の面積を調べ、各文字毎にそれぞれの面積の順序を最も大きい物から順に出力せよ。
またその情報を元に輪郭のhierarchy情報をcv2で利用出来る形で出力せよ
ひらがなの線に囲まれて閉じた領域の面積を調べ、各文字毎にそれぞれの面積の順序を最も大きい物から順に出力せよ。
またその情報を元に輪郭のhierarchy情報をcv2で利用出来る形で出力せよ
111デフォルトの名無しさん
2023/09/30(土) 17:32:44.04ID:xxjzuZuq お題
文字列が入力されます
赤と緑を入れ替えて
黒と白を入れ替えて
黄と青を入れ替えてください
例
入力: 緑のカバンに500万入れて白の紙で黄色のカバン言うて書きながら赤のカバン言いながら置いてくれたら俺黒のカバン言いながら取りに行くわ
出力: 赤のカバンに500万入れて黒の紙で青色のカバン言うて書きながら緑のカバン言いながら置いてくれたら俺白のカバン言いながら取りに行くわ
文字列が入力されます
赤と緑を入れ替えて
黒と白を入れ替えて
黄と青を入れ替えてください
例
入力: 緑のカバンに500万入れて白の紙で黄色のカバン言うて書きながら赤のカバン言いながら置いてくれたら俺黒のカバン言いながら取りに行くわ
出力: 赤のカバンに500万入れて黒の紙で青色のカバン言うて書きながら緑のカバン言いながら置いてくれたら俺白のカバン言いながら取りに行くわ
112デフォルトの名無しさん
2023/09/30(土) 18:00:29.42ID:oqu6hf3+ >>111 node
const swap = (text, [w1, w2]) => text.split(w1).map(v => v.replaceAll(w2, w1)).join(w2)
const swapAll = (text, rules) => rules.reduce(swap, text)
const text = '緑のカバンに500万入れて白の紙で黄色のカバン言うて書きながら赤のカバン言いながら置いてくれたら俺黒のカバン言いながら取りに行くわ'
const rules = [['赤', '緑'], ['黒', '白'], ['黄', '青']]
const replaced = swapAll(text, rules)
// console.log(replaced)
console.log(replaced === '赤のカバンに500万入れて黒の紙で青色のカバン言うて書きながら緑のカバン言いながら置いてくれたら俺白のカバン言いながら取りに行くわ')
// true
const swap = (text, [w1, w2]) => text.split(w1).map(v => v.replaceAll(w2, w1)).join(w2)
const swapAll = (text, rules) => rules.reduce(swap, text)
const text = '緑のカバンに500万入れて白の紙で黄色のカバン言うて書きながら赤のカバン言いながら置いてくれたら俺黒のカバン言いながら取りに行くわ'
const rules = [['赤', '緑'], ['黒', '白'], ['黄', '青']]
const replaced = swapAll(text, rules)
// console.log(replaced)
console.log(replaced === '赤のカバンに500万入れて黒の紙で青色のカバン言うて書きながら緑のカバン言いながら置いてくれたら俺白のカバン言いながら取りに行くわ')
// true
113デフォルトの名無しさん
2023/09/30(土) 19:24:03.19ID:t2v1jL5l114デフォルトの名無しさん
2023/09/30(土) 20:00:09.54ID:iuoy3pEW >>111 ウェブブラウザのJavaScript
https://pastebin.com/YvymwTeN
ユーザースクリプトの体裁で書いたけどブラウザーのConsoleでも動かせる
Firefox: Ctrl+Shift+K
Chrome: Ctrl+Shift+J
https://mevius.5ch.net/test/read.cgi/tech/1691038333/111 を開いてそこで実行
結果はレスに直接追記
重複がないからXPathのtranslate()でいけるな思った、それだけ
https://pastebin.com/YvymwTeN
ユーザースクリプトの体裁で書いたけどブラウザーのConsoleでも動かせる
Firefox: Ctrl+Shift+K
Chrome: Ctrl+Shift+J
https://mevius.5ch.net/test/read.cgi/tech/1691038333/111 を開いてそこで実行
結果はレスに直接追記
重複がないからXPathのtranslate()でいけるな思った、それだけ
11517
2023/10/02(月) 01:36:39.53ID:hWT/DRlk11617
2023/10/02(月) 01:52:26.35ID:hWT/DRlk >>104
1. qrencode というプログラムをインストールする。(例: RedHat系Linuxなら yum install qrencode)
2. qrencode で出力に ansi 等を指定して文字列で出力する。
例: qrencode -t ansi やっほー
3. 画面に出て来たQRコードをスマホで撮影する等して確認する。
4. 終わり。
1. qrencode というプログラムをインストールする。(例: RedHat系Linuxなら yum install qrencode)
2. qrencode で出力に ansi 等を指定して文字列で出力する。
例: qrencode -t ansi やっほー
3. 画面に出て来たQRコードをスマホで撮影する等して確認する。
4. 終わり。
117デフォルトの名無しさん
2023/10/02(月) 11:46:19.28ID:0odvDMYE118デフォルトの名無しさん
2023/10/06(金) 16:54:06.65ID:jg1c5xSH [クライシスアクター」「豊島保養所」←画像検索&拡散!
他スレに丸ごとコピペよろしっく!!
ネットでできる反レプティリアン・反イルミ活動です!!!!!
動画サイトのコメ欄もねらい目だぞーーーー!!!!!!!
他スレに丸ごとコピペよろしっく!!
ネットでできる反レプティリアン・反イルミ活動です!!!!!
動画サイトのコメ欄もねらい目だぞーーーー!!!!!!!
119デフォルトの名無しさん
2023/10/06(金) 16:54:28.09ID:jg1c5xSH [クライシスアクター」「豊島保養所」←画像検索&拡散!
他スレに丸ごとコピペよろしく!!
ネットでできる反レプティリアン・反イルミ活動です!!!!!
動画サイトのコメ欄もねらい目だぞ!!!!!!!
他スレに丸ごとコピペよろしく!!
ネットでできる反レプティリアン・反イルミ活動です!!!!!
動画サイトのコメ欄もねらい目だぞ!!!!!!!
120デフォルトの名無しさん
2023/10/08(日) 19:28:55.20ID:faQf3SiN お題:n階建てのビルに定員4人のエレベーターがある。エレベーターは各階でボタンが押されるとその階に向かう。住人達はエレベータを呼んで乗るとエレベーター内で次に向かう階へのボタンを押す。ボタンを押すのは乗員全員である。乗るのを待っている住人が定員より多かった場合、エレベーターは乗れなかった住人を優先的に回収する。住人は列の先頭から順番にエレベーターに乗り込む。エレベーターは乗員を降ろしている間に住人を追加で乗せることはなく、すべての乗員を降ろしてから次の住人の回収に向かうものとする。
もっとも効率がいいエレベーターの停止順序を求め、入力に対して停止階のリストを出力せよ。
エレベーターの初期位置は1階とする。
入力
階数
乗員数 住人たちがいる階 乗員iが向かう階 乗員iが向かう階 …
5
1 1 5
2 4 3 2
3 2 1 3 5
出力
停止階 停止階 …
1 5 4 3 2 1 3 5
入力
10
5 1 1 2 3 4 4
9 4 10 10 10 1 8 6 6 6 5
出力
1 2 3 4 1 4 1 10 4 6 8 4 5
もっとも効率がいいエレベーターの停止順序を求め、入力に対して停止階のリストを出力せよ。
エレベーターの初期位置は1階とする。
入力
階数
乗員数 住人たちがいる階 乗員iが向かう階 乗員iが向かう階 …
5
1 1 5
2 4 3 2
3 2 1 3 5
出力
停止階 停止階 …
1 5 4 3 2 1 3 5
入力
10
5 1 1 2 3 4 4
9 4 10 10 10 1 8 6 6 6 5
出力
1 2 3 4 1 4 1 10 4 6 8 4 5
1219
2023/10/08(日) 20:24:03.46ID:zYJ3wh+h122デフォルトの名無しさん
2023/10/09(月) 13:56:36.62ID:V7NN5mnX >>121
2.移動した階数の和が最も小さい
2.移動した階数の和が最も小さい
123デフォルトの名無しさん
2023/10/09(月) 19:10:41.03ID:5dE8x2G+124デフォルトの名無しさん
2023/10/09(月) 22:18:18.11ID:5dE8x2G+125デフォルトの名無しさん
2023/10/12(木) 11:02:46.67ID:u59ybXeV スイカゲームを自動操縦するプログラムを造れ
レスを投稿する
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【画像】エロい一般漫画はなぜこんなに抜けるのか
- 日本人の海外旅行したきのマナーよくなったのはいつから
- BTSのバラエティ面白すぎワロタ
- 寝癖ってどうしたらつかなくなるんや?
