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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2020/11/30(月) 00:04:05.21ID:TF2Czp0y
プログラミングのお題スレです。

【出題と回答例】
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/

0952デフォルトの名無しさん2021/06/09(水) 23:26:34.51ID:jvfDlPRh

0953デフォルトの名無しさん2021/06/09(水) 23:28:22.76ID:YKvIUGd6
>>950
集合論と絡めてもっと洒落たことを言って欲しい
駒場で培った頭をフル回転させて欲しい
君の本気が見たい

0954デフォルトの名無しさん2021/06/09(水) 23:29:18.81ID:2azqR1ms
>>953
客観的に見てそれが乞食が物を乞う態度か?

0955デフォルトの名無しさん2021/06/09(水) 23:30:53.94ID:YKvIUGd6
>>954
僕の態度が乞食がものを乞う態度でないならば僕は乞食ではないということですよね
これが集合論

0956デフォルトの名無しさん2021/06/09(水) 23:31:25.37ID:YKvIUGd6
集合論を極めるとこういうことができるわけです

0957デフォルトの名無しさん2021/06/09(水) 23:32:38.82ID:2azqR1ms
習合以前に簡単な論理すら通じないんだな

0958デフォルトの名無しさん2021/06/09(水) 23:34:28.54ID:YKvIUGd6
>>957
> 習合

wwwwwwこれなんですか?wwwww
wwwwwwwwww習合ってなんですか?wwwwwww
wwwwwwwwwwwwwwなんまんだぶなんまんだぶwwwww

0959デフォルトの名無しさん2021/06/09(水) 23:34:43.42ID:YKvIUGd6
ふぅ・・・

0960デフォルトの名無しさん2021/06/09(水) 23:36:16.61ID:YKvIUGd6
俺は駒場の本気が見たいんだよ

こ・ま・ば! こ・ま・ば! こ・ま・ば!

0961デフォルトの名無しさん2021/06/09(水) 23:52:19.59ID:YKvIUGd6
これでも良いです

ヒント
今日の日にちから1を引く 例:9 - 1 = 8
それを7で割る 例:8 / 7
少数点以下は切り捨て
1を足す

0962デフォルトの名無しさん2021/06/09(水) 23:55:21.66ID:qriTcyP1
>>961
これでもいいですじゃなくてこちらに訂正してくださいませだろ
脳みそ腐ってんのかよ

0963デフォルトの名無しさん2021/06/09(水) 23:59:17.25ID:YKvIUGd6
>>962
それはお前が言うことじゃない
客が神様だとでも思ってるのかつけあがるな痴れ者が
訂正するのは誰なんだ? あ? 日本語わかるか? おん?

0964デフォルトの名無しさん2021/06/10(木) 00:01:30.90ID:SL5oYI2o
訂正してくださいませは訂正しろということだからな
相手に訂正させようとしてんのか? あ?
そんな馬鹿な日本語あってたまるかよ

0965デフォルトの名無しさん2021/06/10(木) 00:04:25.71ID:SL5oYI2o
丁寧な言葉を使おうとするあまりコンテキストにバグを混入させるバカ
プログラマ辞めた方が良い、絶望的に人間に向いてない
汚い庭に首輪で繋がれてワンワン言ってた方が良い

0966デフォルトの名無しさん2021/06/10(木) 00:04:51.89ID:SL5oYI2o
> 962+1 :デフォルトの名無しさん [↓] :2021/06/09(水) 23:55:21.66 ID:qriTcyP1
> >>961
> これでもいいですじゃなくてこちらに訂正してくださいませだろ
> 脳みそ腐ってんのかよ

バカを晒し上げ

0967デフォルトの名無しさん2021/06/10(木) 00:11:31.87ID:n+BhN48t
>>895-896
#!/bin/sh
# 日にち
d=$(date "+%e")
# 第n曜日のn
n=$(( ($d + 6) / 7 ))
# +%a : 曜日 (出力例:木)
dw="第$n"$(date +%a)"曜日"
echo $(date "+%Y/%m/%d/$dw/%H:%M/")

0968デフォルトの名無しさん2021/06/10(木) 00:25:20.64ID:n+BhN48t
>>896
6を足す方法を知ってからだいぶプログラミングが楽になったよ。ありがとう。
#!/bin/sh
d=$(date "+%e")
d7=$(echo "scale=3; $d / 7" | bc)
if [ ${#d7} -lt 2 ]; then n=$d7;
else n=$(echo "scale=3; $d7 + 1.0 " | bc | cut -c 1); fi
dw="第$n"$(date +%a)"曜日"
echo $(date "+%Y/%m/%d/$dw/%H:%M/")

0969デフォルトの名無しさん2021/06/10(木) 00:33:02.83ID:SL5oYI2o
整数型での切り上げは
(a + (b - 1)) / b
でできるからねー

0970デフォルトの名無しさん2021/06/10(木) 00:59:09.52ID:NEUub5Vc
今世紀最大のバカ

ID:YKvIUGd6
ID:SL5oYI2o

0971蟻人間 ◆T6xkBnTXz7B0 2021/06/10(木) 01:01:43.64ID:KaOpR0kd
お題: 正方形内部の2次元空間(0, 0)〜(100, 100)にランダムに1000個の頂点を配置し、頂点群をk-means++により3個のクラスタに
クラスタリングし、頂点群の位置と3個のクラスタ中央をわかりやすく図示せよ。図示できないときはクラスタ中央の座標を表示せよ。

0972デフォルトの名無しさん2021/06/10(木) 09:30:47.98ID:gzqz1I/r

09739722021/06/10(木) 09:44:47.39ID:gzqz1I/r
TimeZoneをlocalに指定したのだけれど、これが'UTC'になっている。_時に9を足せば
良いだけのことではあるが。local、'UTC'以外の何を指定すればよいのか。

0974デフォルトの名無しさん2021/06/10(木) 11:35:30.52ID:oO6awXFS
日本・東京とか、指定できないの?

0975デフォルトの名無しさん2021/06/10(木) 12:36:17.95ID:CSZCrfaL
>>967-968
# Python版
from datetime import datetime
import locale
locale.setlocale( locale.LC_TIME, 'ja_JP.UTF-8' )
today = datetime.now().strftime( '%d' )
num = ( int( today ) + 6 ) // 7
print( datetime.now().strftime( '%Y/%m/%d/' + '第' + str(num) + '%A' + '/%H:%M/' ) )

0976デフォルトの名無しさん2021/06/12(土) 19:29:13.34ID:JV+4q1jr
>>895
日から1引いてからじゃないと7日が2になって駄目だよな。
(ヒントに間違いを書いて惑わす作戦か?)

0977デフォルトの名無しさん2021/06/12(土) 19:47:12.79ID:JV+4q1jr
>>895
Kotlin script

Kotlin だから色々省略出来たりもしてはいるがやっぱ長くなるな。

java.time.LocalDateTime.now().run { println("%d/%02d/%02d/第%d%s曜日/%02d:%02d".format(year, monthValue, dayOfMonth, (dayOfMonth - 1) / 7 + 1, "月火水木金土日"[dayOfWeek.value - 1], hour, minute)) }

今これを実行するとこう出る。

2021/06/12/第2土曜日/19:47

0978デフォルトの名無しさん2021/06/12(土) 19:53:47.74ID:JV+4q1jr
そういや (dayOfMonth - 1) / 7 + 1 は (dayOfMonth + 6) / 7 と同じだったな。
と思ってから他の回答見るとみんなそう計算していた。とほほ。

0979デフォルトの名無しさん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

0980デフォルトの名無しさん2021/06/12(土) 20:28:08.93ID:JV+4q1jr
Formatter.ofPattern() での Locale は本当は設定した方が良いかも知れない。>>979は日本語環境で実行したので曜日が日本語になっている。他の言語向け環境だと曜日の文字列は違って出ると思う。

0981デフォルトの名無しさん2021/06/12(土) 21:14:10.13ID:RadmeEVr
>>979
ふーむ
YYYYはweek-based-yearなので2021/12/26が2022/12/26になってしまうよ
Wはweek-of-monthなので6/6が第2日曜日になってしまうよ

0982デフォルトの名無しさん2021/06/12(土) 22:21:51.66ID:RadmeEVr

0983デフォルトの名無しさん2021/06/12(土) 22:24:48.19ID:RadmeEVr
お題
年月と第何曜日が入力されます
その日付を出力してください

入力: 2021-07,第3月曜日
出力: 2021-07-19

0984デフォルトの名無しさん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
閏秒やサマータイムを挟んでもおそらく問題ない

0985デフォルトの名無しさん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();
}
やっつけ

0986デフォルトの名無しさん2021/06/13(日) 01:31:13.98ID:yIXAqgJY
>>981
あ。そうか。YYYYはyyyyにするとしても、第xの方は計算しないと駄目か。

0987デフォルトの名無しさん2021/06/13(日) 01:36:37.49ID:zmNVs3Ym
>>984
第10月曜日とかあるのか?

0988デフォルトの名無しさん2021/06/13(日) 01:41:41.76ID:oZLTh/kE
>>983 c
https://ideone.com/t2aQ5O
チェックはできているはず

0989デフォルトの名無しさん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

0990デフォルトの名無しさん2021/06/14(月) 23:17:42.44ID:m5mozyJ+

0991デフォルトの名無しさん2021/06/15(火) 17:23:21.13ID:mBLvqrdS
c#
OPEN FILE DIALOGで複数画像ファイル取得
配列に入れる
40秒後2枚目表示、また40秒後3枚目表示という感じで5枚表示したい。
表示はpicture BOXで。

0992デフォルトの名無しさん2021/06/15(火) 20:18:18.09ID:dr3N4crz

099392021/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

0994デフォルトの名無しさん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/' ) )

0995デフォルトの名無しさん2021/06/17(木) 20:41:18.66ID:MdpjMllh
汚いコードだな

0996デフォルトの名無しさん2021/06/17(木) 20:45:10.42ID:LjywRDNy
>>994のコードをPython3の read-evaluate-print loop (REPL)ウィンドウにコピペして実行するときは
最終行手前のelse行の行末までをコピペした後にEnterキーを2回押して
repl画面に>>>を出してから最終行のprint文を実行する

0997デフォルトの名無しさん2021/06/17(木) 21:08:54.55ID:PUHXqTqH
次スレはよ

0998デフォルトの名無しさん2021/06/18(金) 23:51:24.96ID:xh4slIdn
>>983
Kotlin

https://paiza.io/projects/GiZtwd0SiEOY1gIyId565g

紆余曲折の結果、これに落ち着く。

0999デフォルトの名無しさん2021/06/19(土) 00:04:08.81ID:MQWrKSb7
次スレ

プログラミングのお題スレ Part20
https://mevius.5ch.net/test/read.cgi/tech/1624028577/

1000デフォルトの名無しさん2021/06/19(土) 00:04:50.94ID:MQWrKSb7
println(1000)

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 201日 0時間 0分 46秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。