21/06/12 22:24:48.19 RadmeEVr.net
お題
年月と第何曜日が入力されます
その日付を出力してください
入力: 2021-07,第3月曜日
出力: 2021-07-19
1015:デフォルトの名無しさん
21/06/13 00:00:30.76 EAgJhZrv.net
>>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
閏秒やサマータイムを挟んでもおそらく問題ない
1016:デフォルトの名無しさん
21/06/13 00:26:28.82 FnAquiwp.net
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();
}
やっつけ
1017:デフォルトの名無しさん
21/06/13 01:31:13.98 yIXAqgJY.net
>>981
あ。そうか。YYYYはyyyyにするとしても、第xの方は計算しないと駄目か。
1018:デフォルトの名無しさん
21/06/13 01:36:37.49 zmNVs3Ym.net
>>984
第10月曜日とかあるのか?
1019:デフォルトの名無しさん
21/06/13 01:41:41.76 oZLTh/kE.net
>>983 c
URLリンク(ideone.com)
チェックはできているはず
1020:デフォルトの名無しさん
21/06/14 01:12:22.04 fkUpCs5d.net
>>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
1021:デフォルトの名無しさん
21/06/14 23:17:42.44 m5mozyJ+.net
>>983
Java
URLリンク(paiza.io)
1022:デフォルトの名無しさん
21/06/15 17:23:21.13 mBLvqrdS.net
c#
OPEN FILE DIALOGで複数画像ファイル取得
配列に入れる
40秒後2枚目表示、また40秒後3枚目表示という感じで5枚表示したい。
表示はpicture BOXで。
1023:デフォルトの名無しさん
21/06/15 20:18:18.09 dr3N4crz.net
>>883
Java
URLリンク(paiza.io)
1024:9
21/06/17 00:48:24.30 cL+lrU1C.net
>>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->
1025:new(year => $y, month => $m)->day_of_week; printf "$y-$m-%02d\n", $d; 実行結果 ~ $ perl 19_983_day_of_month.pl 2021-07-19
1026:デフォルトの名無しさん
21/06/17 20:30:35.17 XyG5DJkY.net
# >>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/' ) )
1027:デフォルトの名無しさん
21/06/17 20:41:18.66 MdpjMllh.net
汚いコードだな
1028:デフォルトの名無しさん
21/06/17 20:45:10.42 LjywRDNy.net
>>994のコードをPython3の read-evaluate-print loop (REPL)ウィンドウにコピペして実行するときは
最終行手前のelse行の行末までをコピペした後にEnterキーを2回押して
repl画面に>>>を出してから最終行のprint文を実行する
1029:デフォルトの名無しさん
21/06/17 21:08:54.55 PUHXqTqH.net
次スレはよ
1030:デフォルトの名無しさん
21/06/18 23:51:24.96 xh4slIdn.net
>>983
Kotlin
URLリンク(paiza.io)
紆余曲折の結果、これに落ち着く。
1031:デフォルトの名無しさん
21/06/19 00:04:08.81 MQWrKSb7.net
次スレ
プログラミングのお題スレ Part20
スレリンク(tech板)
1032:デフォルトの名無しさん
21/06/19 00:04:50.94 MQWrKSb7.net
println(1000)
1033:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 201日 0時間 0分 46秒
1034:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています