プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
プログラミングのお題スレ Part19
レス数が1000を超えています。これ以上書き込みはできません。
2020/11/30(月) 00:04:05.21ID:TF2Czp0y
978デフォルトの名無しさん
2021/06/12(土) 19:53:47.74ID:JV+4q1jr そういや (dayOfMonth - 1) / 7 + 1 は (dayOfMonth + 6) / 7 と同じだったな。
と思ってから他の回答見るとみんなそう計算していた。とほほ。
と思ってから他の回答見るとみんなそう計算していた。とほほ。
979デフォルトの名無しさん
2021/06/12(土) 20:24:55.76ID:JV+4q1jr ごめん。Javaのライブラリだともっと簡単にできるんだった。
println(java.time.format.DateTimeFormatter.ofPattern("YYYY/MM/dd/第Weeee/HH:mm").format(java.time.LocalDateTime.now()))
これ、Kotlin かどうかは println() の部分だけで中身は Java でも同じ。
月の中の何週目なのかはFormatterで W を使うと自動でやってくれるので自分で計算しなくても良い。
今実行するとこう出る。
2021/06/12/第2土曜日/20:24
println(java.time.format.DateTimeFormatter.ofPattern("YYYY/MM/dd/第Weeee/HH:mm").format(java.time.LocalDateTime.now()))
これ、Kotlin かどうかは println() の部分だけで中身は Java でも同じ。
月の中の何週目なのかはFormatterで W を使うと自動でやってくれるので自分で計算しなくても良い。
今実行するとこう出る。
2021/06/12/第2土曜日/20:24
980デフォルトの名無しさん
2021/06/12(土) 20:28:08.93ID:JV+4q1jr Formatter.ofPattern() での Locale は本当は設定した方が良いかも知れない。>>979は日本語環境で実行したので曜日が日本語になっている。他の言語向け環境だと曜日の文字列は違って出ると思う。
981デフォルトの名無しさん
2021/06/12(土) 21:14:10.13ID:RadmeEVr982デフォルトの名無しさん
2021/06/12(土) 22:21:51.66ID:RadmeEVr983デフォルトの名無しさん
2021/06/12(土) 22:24:48.19ID:RadmeEVr お題
年月と第何曜日が入力されます
その日付を出力してください
入力: 2021-07,第3月曜日
出力: 2021-07-19
年月と第何曜日が入力されます
その日付を出力してください
入力: 2021-07,第3月曜日
出力: 2021-07-19
984デフォルトの名無しさん
2021/06/13(日) 00:00:30.76ID:EAgJhZrv >>983 Ruby
def s2d( str )
return '' unless /(\d+)-(\d+),第(\d+)(.)曜日/ =~ str
tm = Time.new( $1.to_i, $2.to_i, 1, 12 )
( tm + 86400 * ( $3.to_i * 7 - 7 + ("日月火水木金土".index($4) - tm.wday) % 7 ) ).strftime( '%F' )
end
puts s2d( '2021-07,第3月曜日' ) #=> 2021-07-19
閏秒やサマータイムを挟んでもおそらく問題ない
def s2d( str )
return '' unless /(\d+)-(\d+),第(\d+)(.)曜日/ =~ str
tm = Time.new( $1.to_i, $2.to_i, 1, 12 )
( tm + 86400 * ( $3.to_i * 7 - 7 + ("日月火水木金土".index($4) - tm.wday) % 7 ) ).strftime( '%F' )
end
puts s2d( '2021-07,第3月曜日' ) #=> 2021-07-19
閏秒やサマータイムを挟んでもおそらく問題ない
985デフォルトの名無しさん
2021/06/13(日) 00:26:28.82ID:FnAquiwp JS
const f = (x) => {
let [p,q] = x.split(","); let days = {日:0,月:1,火:2,水:3,木:4,金:5,土:6};
let nth = q.match(/\d/)[0]*1;
let day = (r=>{
for (let [k,v] of Object.entries(days)) { if (q.includes(`${k}曜日`)) {return v}}
})(q)
let i = 1;
while (i<32) {
if (new Date(`${p}/${i}`).getDay()!=day) {i++;}
else if (nth != 1) {i+=7; nth--;}
else {break}
}
return new Date(`${p}/${i}`).toLocaleDateString();
}
やっつけ
const f = (x) => {
let [p,q] = x.split(","); let days = {日:0,月:1,火:2,水:3,木:4,金:5,土:6};
let nth = q.match(/\d/)[0]*1;
let day = (r=>{
for (let [k,v] of Object.entries(days)) { if (q.includes(`${k}曜日`)) {return v}}
})(q)
let i = 1;
while (i<32) {
if (new Date(`${p}/${i}`).getDay()!=day) {i++;}
else if (nth != 1) {i+=7; nth--;}
else {break}
}
return new Date(`${p}/${i}`).toLocaleDateString();
}
やっつけ
986デフォルトの名無しさん
2021/06/13(日) 01:31:13.98ID:yIXAqgJY >>981
あ。そうか。YYYYはyyyyにするとしても、第xの方は計算しないと駄目か。
あ。そうか。YYYYはyyyyにするとしても、第xの方は計算しないと駄目か。
987デフォルトの名無しさん
2021/06/13(日) 01:36:37.49ID:zmNVs3Ym >>984
第10月曜日とかあるのか?
第10月曜日とかあるのか?
988デフォルトの名無しさん
2021/06/13(日) 01:41:41.76ID:oZLTh/kE989デフォルトの名無しさん
2021/06/14(月) 01:12:22.04ID:fkUpCs5d >>983
haskell
import Data.Time
import Data.Time.Calendar
import Data.List
data Day = Sun | Mon | Tue | Wed | Thu | Fri | Sat deriving ( Eq ,Show )
nthWeekDayOf y m n w = let
Just wn = elemIndex w [ Sun, Mon, Tue, Wed, Thu, Fri, Sat ]
baseDay = ( fromGregorian 2021 6 13 )
firstDay = fromGregorian y m 1
diffDaysOfFst = fromInteger $ diffDays firstDay baseDay
d = 1 + mod ( wn - diffDaysOfFst ) 7 + 7 * ( n - 1 )
in fromGregorian y m d
main = do
print $ nthWeekDayOf 2021 7 3 Mon
haskell
import Data.Time
import Data.Time.Calendar
import Data.List
data Day = Sun | Mon | Tue | Wed | Thu | Fri | Sat deriving ( Eq ,Show )
nthWeekDayOf y m n w = let
Just wn = elemIndex w [ Sun, Mon, Tue, Wed, Thu, Fri, Sat ]
baseDay = ( fromGregorian 2021 6 13 )
firstDay = fromGregorian y m 1
diffDaysOfFst = fromInteger $ diffDays firstDay baseDay
d = 1 + mod ( wn - diffDaysOfFst ) 7 + 7 * ( n - 1 )
in fromGregorian y m d
main = do
print $ nthWeekDayOf 2021 7 3 Mon
990デフォルトの名無しさん
2021/06/14(月) 23:17:42.44ID:m5mozyJ+991デフォルトの名無しさん
2021/06/15(火) 17:23:21.13ID:mBLvqrdS c#
OPEN FILE DIALOGで複数画像ファイル取得
配列に入れる
40秒後2枚目表示、また40秒後3枚目表示という感じで5枚表示したい。
表示はpicture BOXで。
OPEN FILE DIALOGで複数画像ファイル取得
配列に入れる
40秒後2枚目表示、また40秒後3枚目表示という感じで5枚表示したい。
表示はpicture BOXで。
992デフォルトの名無しさん
2021/06/15(火) 20:18:18.09ID:dr3N4crz9939
2021/06/17(木) 00:48:24.30ID:cL+lrU1C >>983 Perl5
use utf8;
$in = '2021-07,第3月曜日';
%h = map{$_ => ++$i} split '','月火水木金土日';
($y, $m, $wom, $dn) = $in =~ /(\d+)-(\d+),第(\d)(.)曜日/;
$dow = $h{$dn};
use DateTime;
$d = 7 * ($wom - 1) + $dow + DateTime->new(year => $y, month => $m)->day_of_week;
printf "$y-$m-%02d\n", $d;
実行結果
~ $ perl 19_983_day_of_month.pl
2021-07-19
use utf8;
$in = '2021-07,第3月曜日';
%h = map{$_ => ++$i} split '','月火水木金土日';
($y, $m, $wom, $dn) = $in =~ /(\d+)-(\d+),第(\d)(.)曜日/;
$dow = $h{$dn};
use DateTime;
$d = 7 * ($wom - 1) + $dow + DateTime->new(year => $y, month => $m)->day_of_week;
printf "$y-$m-%02d\n", $d;
実行結果
~ $ perl 19_983_day_of_month.pl
2021-07-19
994デフォルトの名無しさん
2021/06/17(木) 20:30:35.17ID:XyG5DJkY # >>895のPython版、>>898のPython版は>>975コレのほうが簡単
import datetime, locale, math
now = datetime.datetime.now()
locale.setlocale( locale.LC_TIME, 'ja_JP.UTF-8' )
# 今日の日にちを取得、型は文字列
day = now.strftime( '%d' )
div7 = ( int( day ) / 7 )
# 日にちを7で割って割り切れたらそれが第何曜日の何に入る数字
# 割り切れなかったら1を足して小数点以下を切り下げ
# import math ; math.floor( 3.9 ) #実行結果は3
# カレンダーを表示させて日にちを7で割ると分かりやすい
if type( div7 ) == int: num = div7
else: num = math.floor( div7 + 1 )
print( now.strftime( '%Y/%m/%d/' + '第' + str(num) + '%A' + '/%H:%M/' ) )
import datetime, locale, math
now = datetime.datetime.now()
locale.setlocale( locale.LC_TIME, 'ja_JP.UTF-8' )
# 今日の日にちを取得、型は文字列
day = now.strftime( '%d' )
div7 = ( int( day ) / 7 )
# 日にちを7で割って割り切れたらそれが第何曜日の何に入る数字
# 割り切れなかったら1を足して小数点以下を切り下げ
# import math ; math.floor( 3.9 ) #実行結果は3
# カレンダーを表示させて日にちを7で割ると分かりやすい
if type( div7 ) == int: num = div7
else: num = math.floor( div7 + 1 )
print( now.strftime( '%Y/%m/%d/' + '第' + str(num) + '%A' + '/%H:%M/' ) )
995デフォルトの名無しさん
2021/06/17(木) 20:41:18.66ID:MdpjMllh 汚いコードだな
996デフォルトの名無しさん
2021/06/17(木) 20:45:10.42ID:LjywRDNy >>994のコードをPython3の read-evaluate-print loop (REPL)ウィンドウにコピペして実行するときは
最終行手前のelse行の行末までをコピペした後にEnterキーを2回押して
repl画面に>>>を出してから最終行のprint文を実行する
最終行手前のelse行の行末までをコピペした後にEnterキーを2回押して
repl画面に>>>を出してから最終行のprint文を実行する
997デフォルトの名無しさん
2021/06/17(木) 21:08:54.55ID:PUHXqTqH 次スレはよ
998デフォルトの名無しさん
2021/06/18(金) 23:51:24.96ID:xh4slIdn999デフォルトの名無しさん
2021/06/19(土) 00:04:08.81ID:MQWrKSb71000デフォルトの名無しさん
2021/06/19(土) 00:04:50.94ID:MQWrKSb7 println(1000)
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 201日 0時間 0分 46秒
新しいスレッドを立ててください。
life time: 201日 0時間 0分 46秒
レス数が1000を超えています。これ以上書き込みはできません。
