プログラミングのお題スレです。
【出題と回答例】
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:/xW45k0z103デフォルトの名無しさん
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 スイカゲームを自動操縦するプログラムを造れ
126デフォルトの名無しさん
2023/10/12(木) 12:31:12.32ID:hnj5q8Ch while (true) push(BUTTON_A)
127デフォルトの名無しさん
2023/10/14(土) 00:00:08.85ID:sMwx6jpS お題:角カッコの列が入力されるのでカッコの対応が取れていたら1,取れていなかったら0と表示せよ
< [[]]
> 1
< [[]
> 0
< [[]]
> 1
< [[]
> 0
12817
2023/10/14(土) 02:22:24.53ID:BgrcFKKf >>127
Perl
bash 等のシェルのコマンドラインで以下のように入力すると標準入力から入力して結果を標準出力に出力する。
perl -ne '$n=0;while(/(.)/g){if($1eq"["){$n++}elsif($1eq"]"){$n--}}$f=$n==0?1:0;print"$f\n"'
実行例
[[]]
1
[[]
0
[[[[]][[]]]
0
[[[[]][[]]]]
1
Perl
bash 等のシェルのコマンドラインで以下のように入力すると標準入力から入力して結果を標準出力に出力する。
perl -ne '$n=0;while(/(.)/g){if($1eq"["){$n++}elsif($1eq"]"){$n--}}$f=$n==0?1:0;print"$f\n"'
実行例
[[]]
1
[[]
0
[[[[]][[]]]
0
[[[[]][[]]]]
1
12917
2023/10/14(土) 04:16:14.71ID:BgrcFKKf130デフォルトの名無しさん
2023/10/14(土) 10:19:17.10ID:BRbCCPQd >>127 Ruby
%W( [[]] [[] [[[[]][[]]] [[[[]][[]]]] ][ #{} ).each{|s|
w = s.dup
{} while w.sub!( /\[\]/, '' )
puts "#{(s != '' && w == '')? 1 : 0} #{s.inspect}"
}
# 1 "[[]]"
# 0 "[[]"
# 0 "[[[[]][[]]]"
# 1 "[[[[]][[]]]]"
# 0 "]["
# 0 ""
%W( [[]] [[] [[[[]][[]]] [[[[]][[]]]] ][ #{} ).each{|s|
w = s.dup
{} while w.sub!( /\[\]/, '' )
puts "#{(s != '' && w == '')? 1 : 0} #{s.inspect}"
}
# 1 "[[]]"
# 0 "[[]"
# 0 "[[[[]][[]]]"
# 1 "[[[[]][[]]]]"
# 0 "]["
# 0 ""
131デフォルトの名無しさん
2023/10/14(土) 22:38:53.08ID:5dUK8HoW132デフォルトの名無しさん
2023/10/16(月) 08:51:26.93ID:kgcCjrnK 1)
BY
RG
2)
RG
BY
3)
GR
YB
1-3を回転対称で同じとみなせるグループと線対称で同じとみなせるグループに分類せよ
4色を2x2の升にランダムに一つづつ配置して4x3x2通りのパターンを作成し
それぞれを上の基準でグループ分けせよ
BY
RG
2)
RG
BY
3)
GR
YB
1-3を回転対称で同じとみなせるグループと線対称で同じとみなせるグループに分類せよ
4色を2x2の升にランダムに一つづつ配置して4x3x2通りのパターンを作成し
それぞれを上の基準でグループ分けせよ
133デフォルトの名無しさん
2023/10/17(火) 07:02:57.86ID:InaHR8fg134デフォルトの名無しさん
2023/10/18(水) 20:40:59.79ID:4ifgnZXl お題:Pythonのmath.ulp()と同機能の関数
引数が正規化数限定のサブセットでも可(その旨を明記)。
Pythonで実装する場合は(もちろん)math.ulp()を使ってはならない。
引数が正規化数限定のサブセットでも可(その旨を明記)。
Pythonで実装する場合は(もちろん)math.ulp()を使ってはならない。
136デフォルトの名無しさん
2023/10/18(水) 20:56:02.06ID:L3TY2GGf import struct
def my_ulp(x):
# 浮動小数点数xをバイト列に変換
b = struct.pack("d", x)
# バイト列を整数に変換
i = int.from_bytes(b, "little")
# 符号部(1ビット)を取り出す
s = i >> 63
# 指数部(11ビット)を取り出す
e = (i >> 52) & 0x7ff
# 仮数部(52ビット)を取り出す
m = i & 0xfffffffffffff
# 指数部が0や最大値ならエラー
if e == 0 or e == 0x7ff:
raise ValueError("x is not a normalized number")
# 仮数部の最下位ビット(1ビット)を求める
lsb = m & 1
# 符号部と指数部を元に戻す
i = (s << 63) | ((e - lsb) << 52)
# 整数をバイト列に変換
b = i.to_bytes(8, "little")
# バイト列を浮動小数点数に変換
return struct.unpack("d", b)[0]
def my_ulp(x):
# 浮動小数点数xをバイト列に変換
b = struct.pack("d", x)
# バイト列を整数に変換
i = int.from_bytes(b, "little")
# 符号部(1ビット)を取り出す
s = i >> 63
# 指数部(11ビット)を取り出す
e = (i >> 52) & 0x7ff
# 仮数部(52ビット)を取り出す
m = i & 0xfffffffffffff
# 指数部が0や最大値ならエラー
if e == 0 or e == 0x7ff:
raise ValueError("x is not a normalized number")
# 仮数部の最下位ビット(1ビット)を求める
lsb = m & 1
# 符号部と指数部を元に戻す
i = (s << 63) | ((e - lsb) << 52)
# 整数をバイト列に変換
b = i.to_bytes(8, "little")
# バイト列を浮動小数点数に変換
return struct.unpack("d", b)[0]
137134
2023/10/18(水) 21:44:13.43ID:4ifgnZXl >>135
間違えましたorz
間違えましたorz
139デフォルトの名無しさん
2023/10/21(土) 04:08:56.28ID:TaroWUwV お題:文字列「せんだ」「みつを」「ナハナハ」がランダムに100行入力される。せんだ、みつを、ナハナハが順番に入力されたときに1と一行出力せよ
140デフォルトの名無しさん
2023/10/21(土) 23:03:24.39ID:x0YGunAE141デフォルトの名無しさん
2023/10/25(水) 07:23:48.08ID:gFkqcLnH お題:
(1)Python3.12以降の、math.nextafter()のサブセット
(実装はPythonでなくても構いません)
64ビット長程度の整数iを引数として、
a)iがゼロ:foo(i) = 0.0
b)i > 0:foo(i) = nextafter(0, inf, steps=i)
c)i < 0:foo(i) = nextafter(0, -inf, steps=-i)
を満たすfoo()を書く。
Python3.12を使う場合は、nextafter()を使ってはならない。
(2)(1)の逆関数。
(1)Python3.12以降の、math.nextafter()のサブセット
(実装はPythonでなくても構いません)
64ビット長程度の整数iを引数として、
a)iがゼロ:foo(i) = 0.0
b)i > 0:foo(i) = nextafter(0, inf, steps=i)
c)i < 0:foo(i) = nextafter(0, -inf, steps=-i)
を満たすfoo()を書く。
Python3.12を使う場合は、nextafter()を使ってはならない。
(2)(1)の逆関数。
142141
2023/10/25(水) 07:27:56.03ID:gFkqcLnH 補足:(1)(2)いずれも実用的な時間内で求める事(steps=1相当のnextafter()をループで回すのは不可)。
143デフォルトの名無しさん
2023/10/25(水) 12:47:47.78ID:Bgy3SEXp なんだnextafterって
144141
2023/10/25(水) 23:22:03.23ID:gFkqcLnH14521-923
2023/10/26(木) 00:31:46.93ID:7aLp+Ojb 前スレの補足:
V8やLLVMは、自前でstrtod()的なものを実装してました。
tps://arxiv.org/abs/2101.11408
V8やLLVMは、自前でstrtod()的なものを実装してました。
tps://arxiv.org/abs/2101.11408
146デフォルトの名無しさん
2023/10/28(土) 20:54:22.44ID:U0JINWpQ >>101 octave
https://ideone.com/87WGBO
function s = f(s, i)
s(circshift(i, -1, 2)) = s(i);
end
>>127 ocaml
https://ideone.com/IY1dWU
let chars s =
let rec aux acc i =
if i < 0 then acc else aux (s.[i] :: acc) (i - 1)
in aux [] ((String.length s) - 1)
let f s =
let rec aux = function
([], []) -> 1
| (_, []) -> 0
| ('['::bs, ']'::cs) -> aux (bs, cs)
| (bs, c::cs) -> aux (c::bs, cs)
in aux ([], (chars s))
https://ideone.com/87WGBO
function s = f(s, i)
s(circshift(i, -1, 2)) = s(i);
end
>>127 ocaml
https://ideone.com/IY1dWU
let chars s =
let rec aux acc i =
if i < 0 then acc else aux (s.[i] :: acc) (i - 1)
in aux [] ((String.length s) - 1)
let f s =
let rec aux = function
([], []) -> 1
| (_, []) -> 0
| ('['::bs, ']'::cs) -> aux (bs, cs)
| (bs, c::cs) -> aux (c::bs, cs)
in aux ([], (chars s))
147デフォルトの名無しさん
2023/10/31(火) 00:00:13.24ID:mywig6Xf >>3 c
https://ideone.com/BnNzUC
int has26(const char *p) {
int c, count[26] = {0};
for (; c = tolower(*p); p++) if (isalpha(c)) count[c - 'a']++;
for (c = 'a'; c <= 'z'; c++) if (count[c - 'a'] < 1) return 0;
return 1;
}
const char *f(const char **lines, int n) {
const char *found = 0;
int i, len, minlen;
for (i = 0; i < n; i++)
if (has26(lines[i]))
if (!found)
found = lines[i], minlen = strlen(lines[i]);
else if (len = strlen(lines[i]) < minlen)
found = lines[i], minlen = len;
return found;
}
https://ideone.com/BnNzUC
int has26(const char *p) {
int c, count[26] = {0};
for (; c = tolower(*p); p++) if (isalpha(c)) count[c - 'a']++;
for (c = 'a'; c <= 'z'; c++) if (count[c - 'a'] < 1) return 0;
return 1;
}
const char *f(const char **lines, int n) {
const char *found = 0;
int i, len, minlen;
for (i = 0; i < n; i++)
if (has26(lines[i]))
if (!found)
found = lines[i], minlen = strlen(lines[i]);
else if (len = strlen(lines[i]) < minlen)
found = lines[i], minlen = len;
return found;
}
148デフォルトの名無しさん
2023/11/02(木) 14:01:24.52ID:4TnUpiLT14917
2023/11/05(日) 02:55:01.08ID:w6RhJs5K >>148
ChatGPT にそのままテキストを読ませたらこう答えた。
-------------------------------------------------------------------------------------------------
通学に自転車を使わない学生は34人、自転車を使うがバスを使わない学生は39人、バスを使うが自転車を使わない学生は18人です。
100人の学生全体からこれらの人数を引いた残りの学生がバスと自転車の両方を使っている学生の数です。
100人 - 34人 (自転車を使わない学生) - 39人 (バスを使わない学生) - 18人 (自転車を使わない学生) = 9人
したがって、通学にバスと自転車の両方を使う学生は9人です。
-------------------------------------------------------------------------------------------------
ここで徒歩については考慮しないのかとツッコミを入れたらこう答えた。
-------------------------------------------------------------------------------------------------
申し訳ありません、徒歩の学生についての情報が提供されていなかったため、上記の計算では徒歩を選択した学生については考慮されていませんでした。徒歩を選択した学生の数についての情報がなければ、バスと自転車の両方を使う学生の正確な数を計算することはできません。
-------------------------------------------------------------------------------------------------
ChatGPT にそのままテキストを読ませたらこう答えた。
-------------------------------------------------------------------------------------------------
通学に自転車を使わない学生は34人、自転車を使うがバスを使わない学生は39人、バスを使うが自転車を使わない学生は18人です。
100人の学生全体からこれらの人数を引いた残りの学生がバスと自転車の両方を使っている学生の数です。
100人 - 34人 (自転車を使わない学生) - 39人 (バスを使わない学生) - 18人 (自転車を使わない学生) = 9人
したがって、通学にバスと自転車の両方を使う学生は9人です。
-------------------------------------------------------------------------------------------------
ここで徒歩については考慮しないのかとツッコミを入れたらこう答えた。
-------------------------------------------------------------------------------------------------
申し訳ありません、徒歩の学生についての情報が提供されていなかったため、上記の計算では徒歩を選択した学生については考慮されていませんでした。徒歩を選択した学生の数についての情報がなければ、バスと自転車の両方を使う学生の正確な数を計算することはできません。
-------------------------------------------------------------------------------------------------
15017
2023/11/05(日) 02:58:00.24ID:w6RhJs5K そして更にこういうツッコミを入れる。
最初の34人は自転車を使っていないだけで密かにバスを使っているかも知れないのだが、そのことは考慮しないのか?
ChatGPT
申し訳ありません、私の以前の回答は不完全でした。確かに、最初の34人のうち自転車を使っていないという情報だけでは、彼らがバスを使っているかどうかを確定することはできません。そのため、正確な答えを得るためには追加の情報が必要です。
もし最初の34人のうち何人かが実際にはバスを利用している場合、それを考慮する必要があります。与えられた情報だけからは、バスと自転車の両方を使う学生の正確な数を特定することはできません。必要な情報が揃わない限り、正確な答えを提供することはできません。
最初の34人は自転車を使っていないだけで密かにバスを使っているかも知れないのだが、そのことは考慮しないのか?
ChatGPT
申し訳ありません、私の以前の回答は不完全でした。確かに、最初の34人のうち自転車を使っていないという情報だけでは、彼らがバスを使っているかどうかを確定することはできません。そのため、正確な答えを得るためには追加の情報が必要です。
もし最初の34人のうち何人かが実際にはバスを利用している場合、それを考慮する必要があります。与えられた情報だけからは、バスと自転車の両方を使う学生の正確な数を特定することはできません。必要な情報が揃わない限り、正確な答えを提供することはできません。
151デフォルトの名無しさん
2023/11/06(月) 00:02:49.99ID:fuk9k4cf お題:単方向リストを逆順にせよ
152デフォルトの名無しさん
2023/11/06(月) 00:48:06.04ID:uPzAm2Gi153デフォルトの名無しさん
2023/11/11(土) 20:39:33.71ID:iU/7lT3J >>85
Ruby で作った。
FileUtils::DryRun を使っているので、実際には変更されません
require 'fileutils'
HEAD = 'abc' # 先頭文字
EXT = '.mp4' # 末尾の拡張子
HEAD_LEN = HEAD.length # 3文字
EXT_LEN = EXT.length # 4文字
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/test/*#{ EXT }"
target_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
# 元のファイル名の配列
fname_src_ary = Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.select do |full_path|
file_name = File.basename( full_path )
# 先頭文字が abc かつ、末尾が .mp4 だけに絞り込む
file_name.start_with?( HEAD ) && file_name.end_with?( EXT )
end
.map { |full_path| File.basename( full_path ) }
次へ続く
Ruby で作った。
FileUtils::DryRun を使っているので、実際には変更されません
require 'fileutils'
HEAD = 'abc' # 先頭文字
EXT = '.mp4' # 末尾の拡張子
HEAD_LEN = HEAD.length # 3文字
EXT_LEN = EXT.length # 4文字
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/test/*#{ EXT }"
target_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
# 元のファイル名の配列
fname_src_ary = Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.select do |full_path|
file_name = File.basename( full_path )
# 先頭文字が abc かつ、末尾が .mp4 だけに絞り込む
file_name.start_with?( HEAD ) && file_name.end_with?( EXT )
end
.map { |full_path| File.basename( full_path ) }
次へ続く
154153
2023/11/11(土) 20:41:20.19ID:iU/7lT3J # 変更後のファイル名の配列
fname_dest_ary = fname_src_ary.map do |file_name|
str = String.new( file_name )
# 先頭文字の abc と、末尾の .mp4 を取り除いて、数字だけにする
str.slice!(-EXT_LEN, EXT_LEN)
str.slice!(0, HEAD_LEN)
# 10進数の数値型に変換してから、3桁0埋め文字にする
HEAD + "%03d" % Integer( str, 10 ) + EXT
end
require 'set'
# 変更後のファイル名が既に存在しているか、チェックする。
# abc100.mp4 など、3桁以上の数値もエラー!
fname_src_set = Set.new( fname_src_ary ) # 集合
fname_dest_ary.each { |file_name|
raise "ファイル名: #{ file_name } が重複しています" if
fname_src_set.include?( file_name )
}
# ファイル名を変更する
fname_src_ary.zip( fname_dest_ary ) do |src_filename, dest_filename|
src_path = target_dir + "/" + src_filename
dest_path = target_dir + "/" + dest_filename
FileUtils::DryRun.move( src_path, dest_path )
end
出力
mv C:/Users/Owner/Documents/test/abc0.mp4
C:/Users/Owner/Documents/test/abc000.mp4
mv C:/Users/Owner/Documents/test/abc99.mp4
C:/Users/Owner/Documents/test/abc099.mp4
fname_dest_ary = fname_src_ary.map do |file_name|
str = String.new( file_name )
# 先頭文字の abc と、末尾の .mp4 を取り除いて、数字だけにする
str.slice!(-EXT_LEN, EXT_LEN)
str.slice!(0, HEAD_LEN)
# 10進数の数値型に変換してから、3桁0埋め文字にする
HEAD + "%03d" % Integer( str, 10 ) + EXT
end
require 'set'
# 変更後のファイル名が既に存在しているか、チェックする。
# abc100.mp4 など、3桁以上の数値もエラー!
fname_src_set = Set.new( fname_src_ary ) # 集合
fname_dest_ary.each { |file_name|
raise "ファイル名: #{ file_name } が重複しています" if
fname_src_set.include?( file_name )
}
# ファイル名を変更する
fname_src_ary.zip( fname_dest_ary ) do |src_filename, dest_filename|
src_path = target_dir + "/" + src_filename
dest_path = target_dir + "/" + dest_filename
FileUtils::DryRun.move( src_path, dest_path )
end
出力
mv C:/Users/Owner/Documents/test/abc0.mp4
C:/Users/Owner/Documents/test/abc000.mp4
mv C:/Users/Owner/Documents/test/abc99.mp4
C:/Users/Owner/Documents/test/abc099.mp4
15517
2023/11/21(火) 04:31:35.72ID:aOoah041156デフォルトの名無しさん
2023/11/25(土) 20:07:06.40ID:zpqT0hBE お題:ランダムに1から9999までの整数を得た時、何回で全種類出揃うか確認せよ
擬似乱数列生成法については指定しないものとする
ruby
https://ideone.com/rucuHk
require 'set'
r = 1..9999
c = r.to_a.fill(0)
s = r.to_set
while !s.empty?
n = rand(r)
c[n - r.first] += 1
s.delete n
end
p c.sum
↓
84736
擬似乱数列生成法については指定しないものとする
ruby
https://ideone.com/rucuHk
require 'set'
r = 1..9999
c = r.to_a.fill(0)
s = r.to_set
while !s.empty?
n = rand(r)
c[n - r.first] += 1
s.delete n
end
p c.sum
↓
84736
157デフォルトの名無しさん
2023/11/25(土) 22:17:37.68ID:Al0Rw+0l158デフォルトの名無しさん
2023/11/26(日) 10:44:04.74ID:dd78ITN+ プログラミングの依頼はここでいいでしょうか。
ココナラで依頼したのですが見送りになってしまいました。
お金は出すので製品版を作って欲しいです。
できないなら何が定義できていないのか教えて下さい。
AIによる詩作成
まずAIが詩を作成するための学習ツールを作ります
AIがリンゴの形相を分解するには辞書が必要となる
リンゴを検索し辞書を比較し関連性の高いワード
リンゴ⊇(赤い、丸い、果物…)を拾うのだ
これが学習ツールであり
一致したワードからさらに形相に分解する
リンゴ⊇(赤い、丸い、果物、酸っぱい…)
その中の果物を形相分解するには
果物⊇(リンゴ、サクランボ、なし…)
その中のなしを様相分解すると
なし⊇(果物、丸い、黄緑…)
ここから詩を作るには『黄緑のリンゴ』などになる
形相分解すると客観的な『深さ』(今回は三段階)を持った詩になる
ココナラで依頼したのですが見送りになってしまいました。
お金は出すので製品版を作って欲しいです。
できないなら何が定義できていないのか教えて下さい。
AIによる詩作成
まずAIが詩を作成するための学習ツールを作ります
AIがリンゴの形相を分解するには辞書が必要となる
リンゴを検索し辞書を比較し関連性の高いワード
リンゴ⊇(赤い、丸い、果物…)を拾うのだ
これが学習ツールであり
一致したワードからさらに形相に分解する
リンゴ⊇(赤い、丸い、果物、酸っぱい…)
その中の果物を形相分解するには
果物⊇(リンゴ、サクランボ、なし…)
その中のなしを様相分解すると
なし⊇(果物、丸い、黄緑…)
ここから詩を作るには『黄緑のリンゴ』などになる
形相分解すると客観的な『深さ』(今回は三段階)を持った詩になる
159デフォルトの名無しさん
2023/11/26(日) 10:50:43.54ID:d/KzVdDP160デフォルトの名無しさん
2023/11/26(日) 11:41:26.07ID:1iIVw+fD161158
2023/11/26(日) 12:29:54.58ID:dd78ITN+ 製品版なら10万円出します
AIでなくても詩作成ツールでいいです
AIでなくても詩作成ツールでいいです
162デフォルトの名無しさん
2023/11/26(日) 13:43:11.68ID:4uIV+oN2163デフォルトの名無しさん
2023/11/26(日) 21:12:35.28ID:SfQeb61a16417
2023/11/27(月) 10:19:46.26ID:VB+FhCy9 >>158
ここは誰かがお題を出して答えたい人が答えるスレなので、どんなお題を書いても構わないが、誰も答えないことはよくある。
また、バグがあっても気づかずにそのままになる事もある。多分大半のプログラムは作った本人以外は検証しないので。
ごく稀に他人がバグを発見することはあるが、発見されてもわざわざ指摘するとは限らないし修正もされないかも知れない。
ここは誰かがお題を出して答えたい人が答えるスレなので、どんなお題を書いても構わないが、誰も答えないことはよくある。
また、バグがあっても気づかずにそのままになる事もある。多分大半のプログラムは作った本人以外は検証しないので。
ごく稀に他人がバグを発見することはあるが、発見されてもわざわざ指摘するとは限らないし修正もされないかも知れない。
16517
2023/11/27(月) 10:35:37.58ID:VB+FhCy9166デフォルトの名無しさん
2023/11/27(月) 12:57:15.00ID:lzpjbGZv16717
2023/11/27(月) 13:09:30.74ID:VB+FhCy9 >>156
また Kotlin
https://paiza.io/projects/yYQ9bdMb0_d91607skNw4Q
今度は add ではなく remove でやるようにした。
これでその Ruby の例に近くはなるがカウントする方法は前と同じで個別にはやってない。
また Kotlin
https://paiza.io/projects/yYQ9bdMb0_d91607skNw4Q
今度は add ではなく remove でやるようにした。
これでその Ruby の例に近くはなるがカウントする方法は前と同じで個別にはやってない。
168デフォルトの名無しさん
2023/11/27(月) 18:30:50.07ID:O6HTjvgJ169156
2023/11/27(月) 20:35:49.92ID:VuTnBSK2 >>156 c
https://ideone.com/K1fD78
・lispのひとの(>>162)をパク…参考にしました
・乱数生成部分は https://c-faq.com/lib/randrange.html からコピペしました
int main() {
int a[9999] = {0}, size = sizeof a / sizeof *a, sum, min, max, r, i, j, k;
srand(time(0));
#define randi(size) ((int)((double)rand() / ((double)RAND_MAX + 1) * (size)))
for (r = size; 0 < r; ) if (!a[randi(size)]++) r--;
for (sum = min = max = a[0], i = 1; i < size; i++) {
sum += a[i];
min = min < a[i] ? min : a[i];
max = a[i] < max ? max : a[i];
}
printf("%d\n%f\n[%d, %d]\n", sum, (double)sum / size, min, max);
for (i = min; i <= max; i++) {
for (k = j = 0; j < size; j++) if (i == a[j]) k++;
printf("%d\t%d\n", i, k);
}
return 0;
}
https://ideone.com/K1fD78
・lispのひとの(>>162)をパク…参考にしました
・乱数生成部分は https://c-faq.com/lib/randrange.html からコピペしました
int main() {
int a[9999] = {0}, size = sizeof a / sizeof *a, sum, min, max, r, i, j, k;
srand(time(0));
#define randi(size) ((int)((double)rand() / ((double)RAND_MAX + 1) * (size)))
for (r = size; 0 < r; ) if (!a[randi(size)]++) r--;
for (sum = min = max = a[0], i = 1; i < size; i++) {
sum += a[i];
min = min < a[i] ? min : a[i];
max = a[i] < max ? max : a[i];
}
printf("%d\n%f\n[%d, %d]\n", sum, (double)sum / size, min, max);
for (i = min; i <= max; i++) {
for (k = j = 0; j < size; j++) if (i == a[j]) k++;
printf("%d\t%d\n", i, k);
}
return 0;
}
17017
2023/11/28(火) 15:35:44.30ID:cIauX08C >>156
今度はC言語
https://paiza.io/projects/c6ALnYb4rksMFGZT03mcCw
1~9999ではなく実際には0~9998でやっているが、表示する必要もないし一々1足したり後で引いたりも馬鹿らしいのでそのままにした。
今度はC言語
https://paiza.io/projects/c6ALnYb4rksMFGZT03mcCw
1~9999ではなく実際には0~9998でやっているが、表示する必要もないし一々1足したり後で引いたりも馬鹿らしいのでそのままにした。
171デフォルトの名無しさん
2023/11/30(木) 06:46:26.20ID:/rzYr39l お題:英字の羅列された文字列が与えられる。この文字列を分析して数字列を出力せよ。数字の表記ルールは、その文字の両隣の文字がASCIIコードにおける奇数だったら1、そうでなければ0.
172デフォルトの名無しさん
2023/11/30(木) 09:19:30.52ID:AZ5oWFgm 前提としてエラー入力はなくて
出力は両隣がある時のみでいいのかな
use itertools::{Itertools, assert_equal};
fn convert(input: &[u8]) -> Vec<u8> {
input
.iter()
.tuple_windows()
.map(|(prev, _curr, next)| (prev & next & 1) + b'0')
.collect()
}
fn main() {
assert_equal(&convert(b"ABC"), b"1");
assert_equal(&convert(b"abcIJKpqrXYZ"), b"1001010000");
}
出力は両隣がある時のみでいいのかな
use itertools::{Itertools, assert_equal};
fn convert(input: &[u8]) -> Vec<u8> {
input
.iter()
.tuple_windows()
.map(|(prev, _curr, next)| (prev & next & 1) + b'0')
.collect()
}
fn main() {
assert_equal(&convert(b"ABC"), b"1");
assert_equal(&convert(b"abcIJKpqrXYZ"), b"1001010000");
}
173デフォルトの名無しさん
2023/11/30(木) 20:13:06.94ID:tzHzM+FM >>171 octave
https://ideone.com/mx954D
function a = f(s)
o = rem([0 uint8(s) 0], 2) == 1;
a = o(1:end-2) & o(3:end);
end
>>171 c
https://ideone.com/VsnqKu
void f(const char *s, int *out, int *len) {
int i;
for (*len = strlen(s), i = 0; i < *len; i++)
out[i] = (i == 0 || i == *len - 1) ? 0 : s[i - 1] & s[i + 1] & 1;
}
https://ideone.com/mx954D
function a = f(s)
o = rem([0 uint8(s) 0], 2) == 1;
a = o(1:end-2) & o(3:end);
end
>>171 c
https://ideone.com/VsnqKu
void f(const char *s, int *out, int *len) {
int i;
for (*len = strlen(s), i = 0; i < *len; i++)
out[i] = (i == 0 || i == *len - 1) ? 0 : s[i - 1] & s[i + 1] & 1;
}
174デフォルトの名無しさん
2023/11/30(木) 20:40:22.09ID:2Igm/ys/17517
2023/12/02(土) 14:30:47.66ID:FLL1Kaqa >>171
Kotlin
https://paiza.io/projects/xZXVc46Ys3qUlGX4DAIxzw
両隣が存在する文字のみを対象に処理をするようにした。なので3文字未満はエラーになる。3文字の場合は2文字目だけを対象にして一つ結果を出す。
Kotlin
https://paiza.io/projects/xZXVc46Ys3qUlGX4DAIxzw
両隣が存在する文字のみを対象に処理をするようにした。なので3文字未満はエラーになる。3文字の場合は2文字目だけを対象にして一つ結果を出す。
176デフォルトの名無しさん
2023/12/04(月) 20:26:07.07ID:LtCaDuZa >>171 Ruby
def solution1( str )
a = 0
str.chars.inject(''){|s,c|
s << ( (5 & (a = 7 & a << 1 | c.ord & 1) == 5)? '1' : '0' )
}[2..-1] || ''
end
solution( '' ) #=> ""
solution( 'AB' ) #=> ""
def solution1( str )
a = 0
str.chars.inject(''){|s,c|
s << ( (5 & (a = 7 & a << 1 | c.ord & 1) == 5)? '1' : '0' )
}[2..-1] || ''
end
solution( '' ) #=> ""
solution( 'AB' ) #=> ""
177デフォルトの名無しさん
2023/12/08(金) 09:07:44.84ID:Fcz3Modv178デフォルトの名無しさん
2023/12/10(日) 17:41:17.00ID:Dj8Ho2Ik179デフォルトの名無しさん
2023/12/13(水) 09:27:48.18ID:NbIWTS6w お題
ビールの空きビンをN本集めると新品のビール1本と交換してもらえる
あなたが新品のビールをP本持っている
そのとき、あなたが飲めるビールはR本である
N, Pを引数としてRを返す関数を定義してください
ビールの空きビンをN本集めると新品のビール1本と交換してもらえる
あなたが新品のビールをP本持っている
そのとき、あなたが飲めるビールはR本である
N, Pを引数としてRを返す関数を定義してください
18017
2023/12/13(水) 15:17:15.28ID:WwinWAeQ18117
2023/12/13(水) 15:19:45.81ID:WwinWAeQ ごめん。これだと1回分しか計算してないね。ということで >>180 はボツ。
18217
2023/12/13(水) 15:47:32.26ID:WwinWAeQ >>179
Kotlin
https://paiza.io/projects/1gGtpt6dxb6-vzoATj_Qkg
作り直した。
もっと簡略化できそうな感じもしたがやってない。何か画期的な計算方法やアルゴリズムに気付いたらまた作る。
Kotlin
https://paiza.io/projects/1gGtpt6dxb6-vzoATj_Qkg
作り直した。
もっと簡略化できそうな感じもしたがやってない。何か画期的な計算方法やアルゴリズムに気付いたらまた作る。
183デフォルトの名無しさん
2023/12/13(水) 18:37:32.11ID:8Qa5an+7 >>179 Ruby
def solution( n, m )
b = r = n
while (k = b.div( m )) != 0
b += k - k * m
r += k
end
r
end
solution( 5, 3 ) #=> 7
def solution( n, m )
b = r = n
while (k = b.div( m )) != 0
b += k - k * m
r += k
end
r
end
solution( 5, 3 ) #=> 7
184デフォルトの名無しさん
2023/12/14(木) 00:01:58.90ID:WyfgSj4g >>179
https://ideone.com/tvmy6F
let f n p =
let rec aux r p q =
if p = 0 then r else aux (r + p) ((p + q) / n) ((p + q) mod n)
in aux 0 p 0
let () = print_int @@ f 3 5
↓
7
https://ideone.com/tvmy6F
let f n p =
let rec aux r p q =
if p = 0 then r else aux (r + p) ((p + q) / n) ((p + q) mod n)
in aux 0 p 0
let () = print_int @@ f 3 5
↓
7
185デフォルトの名無しさん
2023/12/14(木) 00:03:09.36ID:uNhVrYF218617
2023/12/19(火) 15:39:00.18ID:S/sB6wJe187デフォルトの名無しさん
2024/01/16(火) 00:33:05.98ID:n8j0XaXx お題:時刻の文字列が与えられる。その時刻から1秒後の時刻を出力せよ。
例
入力:00:00:00
出力:00:00:01
入力:23:59:59
出力:00:00:00
例
入力:00:00:00
出力:00:00:01
入力:23:59:59
出力:00:00:00
1889
2024/01/16(火) 02:37:52.68ID:SfyAs2IF >>187 Perl5
use Time::Piece;
use Time::Seconds;
for (qw{00:00:00 23:59:59}) {
$t = Time::Piece->strptime($_, '%T') + 1;
print "入力:$_\n出力:", $t->strftime('%T'), "\n";
}
※見易くするためインデントを全角スペースに置換してあります
実行結果
~ $ perl 22_187_1秒後.pl
入力:00:00:00
出力:00:00:01
入力:23:59:59
出力:00:00:00
use Time::Piece;
use Time::Seconds;
for (qw{00:00:00 23:59:59}) {
$t = Time::Piece->strptime($_, '%T') + 1;
print "入力:$_\n出力:", $t->strftime('%T'), "\n";
}
※見易くするためインデントを全角スペースに置換してあります
実行結果
~ $ perl 22_187_1秒後.pl
入力:00:00:00
出力:00:00:01
入力:23:59:59
出力:00:00:00
190デフォルトの名無しさん
2024/01/16(火) 20:31:44.73ID:76+p6SY+ >>187 octave
https://ideone.com/CEGEj8
f = @(s) datestr(addtodate(datenum(s), 1, 'second'), 'HH:MM:SS');
in = ['00:00:00';'23:59:59'], out = f(in)
https://ideone.com/CEGEj8
f = @(s) datestr(addtodate(datenum(s), 1, 'second'), 'HH:MM:SS');
in = ['00:00:00';'23:59:59'], out = f(in)
191デフォルトの名無しさん
2024/01/16(火) 20:54:27.73ID:OiJoE8pV >>187 PowerShell
"00:00:00", "23:59:59" |% {[String]([DateTime]$_).AddSeconds(1).TimeOfDay}
"00:00:00", "23:59:59" |% {[String]([DateTime]$_).AddSeconds(1).TimeOfDay}
192デフォルトの名無しさん
2024/01/16(火) 21:26:50.38ID:76+p6SY+ >>187 ruby
https://ideone.com/y2wgxo
require 'time'
f = -> s {(Time.parse(s) + 1).strftime('%T')}
p ['00:00:00', '23:59:59'].map {|s| [s, f.(s)]}
https://ideone.com/y2wgxo
require 'time'
f = -> s {(Time.parse(s) + 1).strftime('%T')}
p ['00:00:00', '23:59:59'].map {|s| [s, f.(s)]}
193デフォルトの名無しさん
2024/01/16(火) 23:32:13.09ID:+Emu7d1R >>187 js
const decode = (s) => s.split(":").map(Number);
const encode = (nums) => nums.map((v) => String(v).padStart(2, "0")).join(":");
const inct = (s, sec = 1) => {
const a = decode(s);
const ss = [
{ n: a[0], max: 24 },
{ n: a[1], max: 60 },
{ n: a[2], max: 60 },
];
let up = sec;
const b = ss
.reverse()
.map(({ n, max }) => {
n += up;
up = Math.floor(n / max);
return n % max;
})
.reverse();
return encode(b);
};
console.log(inct("00:00:00"));// 00:00:01
console.log(inct("23:59:59"));// 00:00:00
console.log(inct("00:00:00", 100));// 00:01:40
const decode = (s) => s.split(":").map(Number);
const encode = (nums) => nums.map((v) => String(v).padStart(2, "0")).join(":");
const inct = (s, sec = 1) => {
const a = decode(s);
const ss = [
{ n: a[0], max: 24 },
{ n: a[1], max: 60 },
{ n: a[2], max: 60 },
];
let up = sec;
const b = ss
.reverse()
.map(({ n, max }) => {
n += up;
up = Math.floor(n / max);
return n % max;
})
.reverse();
return encode(b);
};
console.log(inct("00:00:00"));// 00:00:01
console.log(inct("23:59:59"));// 00:00:00
console.log(inct("00:00:00", 100));// 00:01:40
194デフォルトの名無しさん
2024/01/17(水) 00:04:27.61ID:g7dwo5vO >>187 ocaml
https://ideone.com/aEsvl6
let sec_of_hms hms =
let at i = int_of_string (String.sub hms i 2) in at 0 * 60 * 60 + at 3 * 60 + at 6
let hms_of_sec sec =
Printf.sprintf "%02d:%02d:%02d" (sec mod 86400 / 3600) (sec mod 3600 / 60) (sec mod 60)
let (<<) f g x = f (g x)
let f = hms_of_sec << (+) 1 << sec_of_hms
https://ideone.com/aEsvl6
let sec_of_hms hms =
let at i = int_of_string (String.sub hms i 2) in at 0 * 60 * 60 + at 3 * 60 + at 6
let hms_of_sec sec =
Printf.sprintf "%02d:%02d:%02d" (sec mod 86400 / 3600) (sec mod 3600 / 60) (sec mod 60)
let (<<) f g x = f (g x)
let f = hms_of_sec << (+) 1 << sec_of_hms
195デフォルトの名無しさん
2024/01/17(水) 01:45:50.10ID:xvgJymQe >>187
Rust (date/timeライブラリ不使用版)
fn next_time(cur: &str) -> String {
let [sec, min, hour] = cur
.rsplitn(3, ':')
.map(|s| s.parse().unwrap())
.zip([60, 60, 24])
.scan(1, |carry, (mut value, limit)| {
value += *carry;
(*carry, value) = if value == limit { (1, 0) } else { (0, value) };
Some(value)
})
.collect::<ArrayVec<_, 3>>()[..] else { unreachable!() };
format!("{hour:02}:{min:02}:{sec:02}")
}
fn main() {
assert_eq!(next_time("00:00:00"), "00:00:01");
assert_eq!(next_time("23:59:59"), "00:00:00");
}
Rust (date/timeライブラリ不使用版)
fn next_time(cur: &str) -> String {
let [sec, min, hour] = cur
.rsplitn(3, ':')
.map(|s| s.parse().unwrap())
.zip([60, 60, 24])
.scan(1, |carry, (mut value, limit)| {
value += *carry;
(*carry, value) = if value == limit { (1, 0) } else { (0, value) };
Some(value)
})
.collect::<ArrayVec<_, 3>>()[..] else { unreachable!() };
format!("{hour:02}:{min:02}:{sec:02}")
}
fn main() {
assert_eq!(next_time("00:00:00"), "00:00:01");
assert_eq!(next_time("23:59:59"), "00:00:00");
}
19617
2024/01/18(木) 03:01:51.54ID:opxINJAy19717
2024/01/19(金) 19:43:44.34ID:hxZRcaHh >>187
Kotlin
今度は Java のライブラリは使わずに時分秒を保持するクラスを自分で作ってそこで秒に足すとか文字列にするとかやるようにした。
https://paiza.io/projects/7YcPDBTxVFt9EVczvBJ8gQ
Kotlin
今度は Java のライブラリは使わずに時分秒を保持するクラスを自分で作ってそこで秒に足すとか文字列にするとかやるようにした。
https://paiza.io/projects/7YcPDBTxVFt9EVczvBJ8gQ
198デフォルトの名無しさん
2024/01/20(土) 23:08:19.98ID:PCaU0wMN >>187 dart 2.3.0
https://ideone.com/khq9gr
void main() {
var sec_of_hms = (hms) => hms.split(':').fold(0, (acc, s) => acc * 60 + int.parse(s));
var hms_of_sec = (sec) => [sec % 86400 ~/ 3600, sec % 3600 ~/ 60, sec % 60].map((x) => x.toString().padLeft(2, '0')).join(':');
var f = (hms) => hms_of_sec(sec_of_hms(hms) + 1);
print(f('00:00:00'));
print(f('23:59:59'));
}
https://ideone.com/khq9gr
void main() {
var sec_of_hms = (hms) => hms.split(':').fold(0, (acc, s) => acc * 60 + int.parse(s));
var hms_of_sec = (sec) => [sec % 86400 ~/ 3600, sec % 3600 ~/ 60, sec % 60].map((x) => x.toString().padLeft(2, '0')).join(':');
var f = (hms) => hms_of_sec(sec_of_hms(hms) + 1);
print(f('00:00:00'));
print(f('23:59:59'));
}
199デフォルトの名無しさん
2024/01/21(日) 17:06:46.39ID:BpmEGVkv200デフォルトの名無しさん
2024/01/21(日) 21:15:52.66ID:BWkvMixc >>187 c
https://ideone.com/wRIYl2
int hmstosec(const char *hms) {
int h, m, s;
return sscanf(hms, "%d:%d:%d", &h, &m, &s) == 3 ? h * 3600 + m * 60 + s : 0;
}
char *sectohms(char *buff, int sec) {
sprintf(buff, "%02d:%02d:%02d", sec % 86400 / 3600, sec % 3600 / 60, sec % 60);
return buff;
}
char *f(char *buff, const char *hms) {
return sectohms(buff, hmstosec(hms) + 1);
}
>>187 c
https://ideone.com/3gj90n
int hmstosec(const char *hms) {
#define _(i) ((hms[i] - '0') * 10 + (hms[i + 1] - '0'))
return _(0) * 3600 + _(3) * 60 + _(6);
#undef _
}
char *sectohms(char *buff, int sec) {
#define _(i, value) buff[i] = '0' + (value) / 10, buff[i + 1] = '0' + (value) % 10
return _(0, sec % 86400 / 3600), buff[2] = ':', _(3, sec % 3600 / 60), buff[5] = ':', _(6, sec % 60), buff[8] = '\0', buff;
#undef _
}
char *f(char *buff, const char *hms) {
return sectohms(buff, hmstosec(hms) + 1);
}
https://ideone.com/wRIYl2
int hmstosec(const char *hms) {
int h, m, s;
return sscanf(hms, "%d:%d:%d", &h, &m, &s) == 3 ? h * 3600 + m * 60 + s : 0;
}
char *sectohms(char *buff, int sec) {
sprintf(buff, "%02d:%02d:%02d", sec % 86400 / 3600, sec % 3600 / 60, sec % 60);
return buff;
}
char *f(char *buff, const char *hms) {
return sectohms(buff, hmstosec(hms) + 1);
}
>>187 c
https://ideone.com/3gj90n
int hmstosec(const char *hms) {
#define _(i) ((hms[i] - '0') * 10 + (hms[i + 1] - '0'))
return _(0) * 3600 + _(3) * 60 + _(6);
#undef _
}
char *sectohms(char *buff, int sec) {
#define _(i, value) buff[i] = '0' + (value) / 10, buff[i + 1] = '0' + (value) % 10
return _(0, sec % 86400 / 3600), buff[2] = ':', _(3, sec % 3600 / 60), buff[5] = ':', _(6, sec % 60), buff[8] = '\0', buff;
#undef _
}
char *f(char *buff, const char *hms) {
return sectohms(buff, hmstosec(hms) + 1);
}
201デフォルトの名無しさん
2024/01/22(月) 15:47:46.18ID:PT6/fzaV202デフォルトの名無しさん
2024/01/23(火) 20:39:51.43ID:8rvcqFQo >>187 gawk
https://ideone.com/zBy22y
BEGIN {FS=":"}
{print strftime("%T", mktime(sprintf("2024 01 23 %s %s %s", $1, $2, $3)) + 1);}
>>187 sqlite
https://ideone.com/fjEdMz
select time('00:00:00', '+1 second');
select time('23:59:59', '+1 second');
>>187 bash
https://ideone.com/pYf8vL
while read hms; do
date '+%T' --date="+1 seconds $hms"
done
https://ideone.com/zBy22y
BEGIN {FS=":"}
{print strftime("%T", mktime(sprintf("2024 01 23 %s %s %s", $1, $2, $3)) + 1);}
>>187 sqlite
https://ideone.com/fjEdMz
select time('00:00:00', '+1 second');
select time('23:59:59', '+1 second');
>>187 bash
https://ideone.com/pYf8vL
while read hms; do
date '+%T' --date="+1 seconds $hms"
done
203デフォルトの名無しさん
2024/01/23(火) 22:56:23.02ID:8rvcqFQo >>187 pascal
https://ideone.com/sprmCC
program ideone;
Uses sysutils, dateutils;
function f(hms : string) : string;
begin
f := TimeToStr(IncSecond(StrToTime(hms), 1))
end;
begin
writeln(f('00:00:00'));
writeln(f('23:59:59'));
end.
https://ideone.com/sprmCC
program ideone;
Uses sysutils, dateutils;
function f(hms : string) : string;
begin
f := TimeToStr(IncSecond(StrToTime(hms), 1))
end;
begin
writeln(f('00:00:00'));
writeln(f('23:59:59'));
end.
レスを投稿する
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 万引きJC「すいません許してください!何でもしますから!」←どうする?
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 5時だから窓から5回ちんこ出した
- 「黙らせてやろうと思った」自宅マンション10階から高校テニスコート内の女子生徒目掛けて貯金箱を投擲した女の子、殺人未遂で逮捕 [399583221]
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
