1 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:02:57.84 ID:MQWrKSb7.net] プログラミングのお題スレです。 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 結果がある場合はそれも 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ codepad.org/ compileonline.com/ rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part19 https://mevius.5ch.net/test/read.cgi/tech/1606662245/
2 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:37:51.46 ID:qGn/On1S.net] >>1 オツ
3 名前: mailto:sage [2021/06/19(土) 07:27:57.12 ID:NotTQLCm.net] >>1 お疲れ様です
4 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 09:51:25.47 ID:bhsM+Hmb.net] >>1 haskell putStrLn "乙"
5 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 11:32:47.24 ID:HedGQGNJ.net] 部分解答可 1. クリップボードの内容を取得 2. 現在の日時を次のように出力する 2021/06/19/第3土曜日/10:19/ 前スレ参照 #!/bin/sh for num in "896" "967" "968" "972" "975" "977-982" "994" "996" do firefox $( echo '/5422666061/hcet/igc.daer/tset/ten.hc5.suivem//:sptth' | rev )$num sleep 30 done 3. 現在の日時、キーワード、クリップボードの内容を1行にして指定のファイルに追記。キーワードはプログラム実行時にキーボード入力する。 4. 今日が第3土曜日なら指定の画像ファイルを表示
6 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 11:34:07.84 ID:HedGQGNJ.net] 解答例 #!/bin/sh # 1 clipb=$(xclip -o) # 2 day=$(date "+%e") num=$(( ($day + 6) / 7 )) today=$( date "+%Y/%m/%d/"第$num"$(date +%a)"曜日"/%H:%M/" ) # 3 キーボード入力した文字列を変数ahaに入れる read -p "キーワードを入力してください:" aha # trコマンドを使ってクリップボードにコピペした文章から改行文字\nを削除 copipe=$( echo "$today *$aha $clipb" | tr --delete '\n' ) # >>は追記、>は上書きしてしまうので注意 echo "$copipe" >> "$HOME/Documents/memo.txt" # backディレクトリの中にmemoディレクトリを作成 # --parentsは指定の親ディレクトリbakが存在しない場合に作成してくれるオプション引数、mkdir -pでもOK mkdir --parents "$HOME/Documents/bak/memo/" cp --backup "$HOME/Documents/memo.txt" "$HOME/Documents/bak/memo/" xdg-open "$HOME/Documents/memo.txt" # 4 xdg-openは既定のアプリを起動するコマンド if [ $( echo $today | grep "第3土曜日" ) ] ; then xdg-open "$HOME/Pictures/image.jpg" sleep 10 ; exit fi
7 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 11:53:11.09 ID:wmUlN/CJ.net] まだやってるのか
8 名前:デフォルトの名無しさん mailto:sage [2021/06/21(月) 21:15:15.50 ID:h4Y3M1Y8.net] 0 と "n + 1" を任意に定義して自然数を作り、 足し算と掛け算を実装せよ なお "n + 1" は次を満たすこと ・ n + 1 == m + 1 ⇒ n == m ・ n が自然数 ⇒ n + 1 は自然数 ・ n が自然数 ⇒ n + 1 != 0
9 名前:デフォルトの名無しさん [2021/06/22(火) 13:23:44.46 ID:VRgeVVL3.net] お題 リストを受け取って、重複のないリストに分割してください 入力:[b,d,e,c,b,a,a,d,d,a] 出力:[a,b,c,d,e],[a,b,d],[a,d]
10 名前:デフォルトの名無しさん [2021/06/22(火) 14:29:49.78 ID:q0OZcNy5.net] 「すいませーん パンください」 「なんだとー!パンクはダサくねえ!」
11 名前:デフォルトの名無しさん [2021/06/22(火) 18:35:38.31 ID:3KNNvFBI.net] >>9 Ruby s = "b,d,e,c,b,a,a,d,d,a".split(",") t = s.group_by{_1}.values.map{(_1 + [nil] * s.size).take(s.size)}.transpose.map{_1.compact}.reject{_1 == []} p t [["b", "d", "e", "c", "a"], ["b", "d", "a"], ["d", "a"]]
12 名前:デフォルトの名無しさん mailto:sage [2021/06/22(火) 18:38:56.74 ID:3KNNvFBI.net] FBIだ
13 名前:デフォルトの名無しさん mailto:sage [2021/06/22(火) 19:37:22.20 ID:KgqIpy+v.net] >>9 Ruby s = '[b,d,e,c,b,a,a,d,d,a]' a = s.gsub(/[\[\]]/,'').split(',').sort ans = [] while (u = a.uniq).empty?.! ans << u u.each{|x| a.delete_at( a.index(x) ) } end puts "[" + ans.map{|x| x * ','} * '],[' + "]" #=> [a,b,c,d,e],[a,b,d],[a,d]
14 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 00:49:21.38 ID:1nP79viV.net] >>9 haskell iimport Data.List splitSet = transpose . group . sort main = print $ splitSet $ "bdecbaadda" ---- ["abcde","abd","ad"]
15 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 01:16:40.91 ID:P132dmNh.net] >>9 pyth
16 名前:on li = ["b","d","e","c","b","a","a","d","d","a"] t = 0 while len(li) != 0: __s = list(set(li)) __print(s) __for x in s: li.remove(x) 前から順番に重複がないように分割した li = ["b","d","e","c","b","a","a","d","d","a"] t = 0 for i in range(len(li)): __if t>i: continue __ for j, x in enumerate(li[i:]): ____if j==0: continue ____if x in li[i:i+j]: ______print(x,li[i:i+j]) ______t = i+j ______break else: print(li[t:]) [] [ここ壊れてます]
17 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 03:03:47.96 ID:yaBz/mVt.net] 何分割するか指定がないんだからこれで十分だよね s = "b,d,e,c,b,a,a,d,d,a".split(",") puts s.map{|e| "[#{e}]" }.join(",") 出力: [b],[d],[e],[c],[b],[a],[a],[d],[d],[a]
18 名前:デフォルトの名無しさん [2021/06/23(水) 19:57:35.36 ID:PDI/0UM/.net] >>9 Java https://paiza.io/projects/-Ezb89g9jDEZXPSybCsgXQ
19 名前:デフォルトの名無しさん [2021/06/23(水) 19:59:10.71 ID:VBbwJDrL.net] 指定は無いがそうすると自明になりつまんなくなる、 つまり問題としてwell-definedじゃなくなるから、Ruby使ってる人は空気と行間を読む訓練をした方がいい
20 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 20:41:17.73 ID:N3JUxele.net] 皮肉を理解できないのは統合失調症の症状だそうで
21 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 23:35:40.56 ID:gV4gb+yX.net] お題 正整数2つを入力として、それらの商を互いに異なる正整数の逆数の和で表せ ただし、分母となる正整数の最大のものが極力小さくなるようにせよ 例 入力 37, 60 出力 37/60 = 1/4 + 1/5 + 1/6 入力 3,1 出力 3/1 = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/8 + 1/9 + 1/10 + 1/15 + 1/18 + 1/20 + 1/24
22 名前:デフォルトの名無しさん [2021/06/24(木) 12:40:28.82 ID:QkkrxV02.net] お題 月最後の金曜日をプレミアムフライデーといいますが 指定した年のプレミアムフライデー一覧を出力してください 入力: 2021 出力: 2021-01-29 2021-02-26 2021-03-26 2021-04-30 2021-05-28 2021-06-25 2021-07-30 2021-08-27 2021-09-24 2021-10-29 2021-11-26 2021-12-31
23 名前:デフォルトの名無しさん [2021/06/24(木) 13:22:13.95 ID:mpRYRE1b.net] >>20 極小ってのはかんたんに分かるモンなの?
24 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 13:33:05.04 ID:x/nvCroK.net] 「極力小さく」だから プログラマの能力でできる限り、 じゃないの?
25 名前:デフォルトの名無しさん [2021/06/24(木) 14:07:33.05 ID:mpRYRE1b.net] 要するにこれエジプト分数だろ 極小かどうかが面倒くさい話だった エジプト式分数 - Wikipedia https://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%B8%E3%83%97%E3%83%88%E5%BC%8F%E5%88%86%E6%95%B0
26 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 19:38:29.60 ID:XMpTcDaC.net] >>21 Ruby require 'date' y = 2021 12.times{|m| d = Date.new( y, m+1 ).next_month().prev_day() puts d.prev_day( (d.wday-5) % 7 ).strftime( '%F' ) }
27 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 19:39:02.06 ID:XMpTcDaC.net] >>21 Ruby y = 2021 w = Time.new( y ).wday tbl = ( (y & 3) == 0 && (y % 100) != 0 || (y % 400) == 0 )? [ [25,23,25,24,25,24,25,25,24,25,24,25], [2,1,5,3,0,5,2,6,4,1,6,3] ] : [ [25,22,25,24,25,24,25,25,24,25,24,25], [2,2,6,4,1,6,3,0,5,2,0,4] ] 12.times{|m| puts "%04d-%02d-%02d" % [ y, m+1, tbl[0][m] + ((tbl[1][m]-w) % 7) ] }
28 名前:デフォルトの名無しさん [2021/06/24(木) 22:03:03.66 ID:HCLTIuII.net] >>21 Kotlin https://paiza.io/projects/mOAfjYjLJx67zhwlGiIuJw 次の月の1日の曜日を求めてそこから何日引くかを計算して引いているだけ。 java.time.LocalDate クラス使っているので Java でも似たようなプログラムは作れると思う。
29 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 05:25:13.97 ID:RM7Ajj8i.net] >>5-6 # (コマンド),"文字列",(コマンド2) | パイプラインで渡されたコマンド実行結果や文字列を連結して1行の文字列にするJoin-String | # 連結して1行にした文字列で変数初期化(Tee-Object -Variable 変数) | memo.txtに追記(Tee-Object -Append) (Get-Date).ToString("yyyy/MM/dd/第"), [Math]::Floor( ( (Get-Date).Day + 6 ) / 7 ).ToString(), (Get-Date).ToString("dddd/HH:mm/"), " #tag#", ( Read-Host "キーワードを入力" ), " ", ( Get-Clipboard ) | Join-String | Tee-Object -Variable kopipe | Tee-Object -FilePath "$HOME/Documents/memo.txt" -Append # memo.txtをバックアップ Copy-Item -Path "$HOME/Documents/memo.txt" -Destination "$HOME/Documents/bak/memo_bak.txt" # $kopipe = 2021/06/25/第4金曜日/ ###タグ # 今日が"第4金曜日"なら何かをする if ( $( Write-Output $kopipe | Select-String -Pattern "第4金曜日" ) ) { Write-Host "PowerShell" } else { Write-Host "Shell Script" } # Visual Studio Codeでファイルを開く code "$HOME/Documents/memo.txt"
30 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 05:30:47.47 ID:RM7Ajj8i.net] using InteractiveUtils, Dates # 1 clipboardの文字列に含まれる改行文字を半角スペースに変換 clipb = replace( clipboard(), "\n" => " " ) # 2 曜日名や月名を日本語で取得するための設定 # docs.julialang.org/en/v1/stdlib/Dates/#Query-Functions japanese_months = [""] ; japanese_monts_abbrev = [""] japanese_days = ["月曜日","火曜日","水曜日","木曜日","金曜日","土曜日","日曜日"] Dates.LOCALES["nihongo"] = Dates.DateLocale(japanese_months, japanese_monts_abbrev, japanese_days, [""]) # 実行結果例:2021/06/25/第 year_month_day = Dates.format( now(), "yyyy/mm/dd/第" ) # floor( 3.9 )の実行結果は3.0でfloor( Int, 3.9 )の実行結果は3 第num = floor( Int, ( Dates.day( now() ) + 6 ) / 7 ) # 実行結果例:金/04:21/ 、locale="上で設定した名前"は曜日名を英語以外の言語で取得するためのオプション youbi_time = Dates.format( now(), "E/HH:MM/" ; locale="nihongo" ) # 3.grepで一覧表示するときに使うハッシュタグを入力。grep ###5ch, grep ###日記, grep ###英語, grep ###エラー, grep /第2金曜日/") print("タグを入力:") ; hashtag = readline() from_year_to_hashtag = year_month_day * string(第num) * youbi_time * " ###" * hashtag # Juliaで文字列連結は+ではなく* # docs.julialang.org/en/v1/manual/faq/#Why-does-Julia-use-*-for-string-concatenation?-Why-not-or-something-else? copipe = from_year_to_hashtag * " " * clipb * "\n" # docs.julialang.org/en/v1/base/file/#Base.Filesystem.homedir # docs.julialang.org/en/v1/base/io-network/#Base.open # "a"はwrite(書き込み), create(作成), append(追記) io = open( homedir() * "/Documents/memo.txt", "a" ) write( io, copipe ) close(io)
31 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 05:33:54.12 ID:RM7Ajj8i.net] # 4. 今日が第4金曜日なら指定の画像ファイルを表示。ゴミの日とかを登録しておくと便利。 # docs.julialang.org/en/v1/manual/control-flow/ if contains( from_year_to_hashtag, "第4金曜日" ) imagefile = homedir() * "/Pictures/image.jpg" # docs.julialang.org/en/v1/manual/running-external-programs/ # xdg-openの部分はmspaintとかでもOK run(`xdg-open $imagefile`) else println("5ch on") end # docs.julialang.org/en/v1/stdlib/REPL/#The-Julia-REPL # 関数の説明と使用例は次のようにすれば見れるよ。 # julia>using Dates # julia>? <- Enterキーは押さなくて良い # help?>dまで入力した後にTabキーを2回押す # help?>からjulia>に戻すにはBackSpaceキーを押す # その他の使い方 # julia>usingの後に半角スペースを入力した後にTabキーを2回押してモジュール一覧表示 # julia>aを入力後にTabキーを2回押す # julia>absの後に半角スペースを入力した後にTabキーを2回押して関数を一覧表示
32 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 05:50:35.99 ID:RM7Ajj8i.net] IJulia github.com/JuliaLang/IJulia.jl julia> ] (@v1.6) pkg>add IJulia BackSpaceキーを押す replからjupyter Labを起動 julia> using IJulia ; jupyterlab(dir="/home/xxxx/Documents/jupyterlab") Ctrl-D ターミナルから起動 $ jupyter lab --notebook-dir="$HOME/Documents/jupyterlab" --browser="/usr/bin/google-chrome" Visual Studio Code拡張機能Code Runner ファイル>ユーザー設定>設定を開き、画面右上にある三角アイコン右横の「設定(JSON)を開く」をクリック 例 "code-runner.executorMap": { // Julia実行ファイルのフルパス "julia": "$HOME/julia-1.6.1/bin/julia", }, //コード実行結果をターミナルに表示する "code-runner.runInTerminal": true,
33 名前:27 [2021/06/25(金) 15:31:39.30 ID:F/zdAmk3.net] >>21 C https://paiza.io/projects/P3IhYWEdF85M3_-V0EGgAA >>27 のKotlinのやつと考え方は同じ。
34 名前:デフォルトの名無しさん mailto:sage [2021/06/25(金) 21:10:31.51 ID:kVdfg08P.net] ともかく最小とか入れてしまうと途端に難しくなる できればいいんだよ
35 名前:デフォルトの名無しさん mailto:sage [2021/06/26(土) 00:46:33.35 ID:6gOgcdGN.net] >>21 haskell import Data.Time.Calendar premiumFridays y = let baseDay = ( fromGregorian 2021 6 13 ) lastFriday y m = let d = gregorianMonthLength y m difflst = flip diffDays baseDay $ fromGregorian y m d lastDay = fromGregorian y m d in addDays ( - ( mod ( difflst + 2 ) 7 ) ) lastDay in [ lastFriday y m | m<- [ 1.. 12 ] ] main = mapM_ print $ premiumFridays 2021 --- 2021-01-29 2021-02-26 2021-03-26 2021-04-30 2021-05-28 2021-06-25 2021-07-30 2021-08-27 2021-09-24 2021-10-29 2021-11-26 2021-12-31
36 名前:デフォルトの名無しさん mailto:sage [2021/06/26(土) 05:00:02.78 ID:m56tn/Vu.net] Rubyの公式リファレンスは docs.ruby-lang.org
37 名前:デフォルトの名無しさん [2021/06/30(水) 18:30:07.65 ID:fCthiOXz.net] お題: 年、月、週の初めの曜日を表す値(0=日曜日, 1=月曜日)を入力するとその月のカレンダーを出力する。 例 入力: 2021 6 0 出力: 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 上の例はスペースの幅の都合で表示が崩れているかも知れないが、等幅(漢字は2倍)と考えて作って良い。 (なんだったら出力を画像にしても良い)
38 名前:デフォルトの名無しさん [2021/06/30(水) 23:36:42.12 ID:0jpC4Abq.net] 今年は休日変則だな
39 名前:デフォルトの名無しさん [2021/07/01(木) 03:39:10.59 ID:fmzZ+/Bo.net] >>36 Kotlin https://paiza.io/projects/GUCK2jPXyzPYyD_dmW-oXw
40 名前:デフォルトの名無しさん mailto:sage [2021/07/01(木) 08:32:02.86 ID:rhoqKmqn.net] >>36 Ruby str = '2021 7 0' y, m ,s = str.scan(/\d+/).map(&:to_i) a = '日月火水木金土'.chars.rotate(s) a << [" "] * ((Time.new( y, m, 1 ).wday - s) % 7) 1.upto(31){|d| break if Time.new( y, m, d ).month != m a << '%2d' % d } a.flatten.each_slice(7){|w| puts w.join(' ') }
41 名前:デフォルトの名無しさん mailto:sage [2021/07/01(木) 15:44:48.02 ID:fmzZ+/Bo.net] >>36 Kotlin paiza.ioでHTML出力にして画像表示 https://paiza.io/projects/n6KxMYs4zN2MgBn2UiSAwQ
42 名前:デフォルトの名無しさん [2021/07/01(木) 15:53:06.10 ID:x5n7ySmh.net] >>40 しゅごい
43 名前:39 mailto:sage [2021/07/01(木) 19:49:58.87 ID:rhoqKmqn.net] >>36 Ruby str = '2021 7 0' y, m, s = str.scan( /\d+/ ).map( &:to_i ) ( '日月火水木金土'.chars.rotate(s) + [' '] * (( Time.new( y, m, 1 ).wday - s ) % 7) + (1 .. [31, 30, 29, 28].find{|d| Time.new( y, m, d ).month == m }).to_a.map{|d| '%2d' % d } ).flatten.each_slice(7){|w| puts w * ' ' }
44 名前: mailto:sage [2021/07/01(木) 20:48:40.02 ID:Es0JxggH.net] >>36 >週の初めの曜日を表す値(0=日曜日, 1=月曜日)を入力する その条件、いるのですか?
45 名前:デフォルトの名無しさん mailto:sage [2021/07/01(木) 21:15:18.27 ID:FSqo0WtF.net] >>43 お前の存在、いるのですか?
46 名前: mailto:sage [2021/07/01(木) 21:44:00.07 ID:Es0JxggH.net] >>44 なぜ要らないとおもったのですか?
47 名前:デフォルトの名無しさん mailto:sage [2021/07/01(木) 22:06:31.90 ID:FSqo0WtF.net] >>45 誰も要らないとは言っていないのに要らないと言っているように感じられるのは お前がお前自身のことを要らないと思っているからなのだろうな
48 名前:デフォルトの名無しさん [2021/07/02(金) 10:06:20.83 ID:6rZLVHEq.net] >>44 要る。
49 名前:デフォルトの名無しさん [2021/07/02(金) 10:38:45.74 ID:xu7tv1xS.net] >>43 キチ外だな >>46 言い訳すんなアスペ 普通の人間は文脈読むだろ
50 名前:デフォルトの名無しさん [2021/07/02(金) 13:39:10.26 ID:E59Amcuv.net] 本気で知らないんだろう 月曜始まりのカレンダーを見たことないご存じないとかじゃね?
51 名前:デフォルトの名無しさん [2021/07/02(金) 16:10:17.73 ID:lOCqtdeG.net] https://www.543life.com/campus114.html
52 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 22:18:49.57 ID:IHzKftMK.net] >>36 haskell https://ideone.com/tiC2hC
53 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 22:25:49.60 ID:6PmzgaZp.net] >>48 お前が一番日本語理解できてなくて草
54 名前:デフォルトの名無しさん mailto:sage [2021/07/02(金) 22:59:04.30 ID:bqpqPyM3.net] >>49 むしろ全てのカレンダーを月曜始まりにして欲しいぐらい
55 名前:デフォルトの名無しさん [2021/07/03(土) 02:44:37.57 ID:+PW8v28+.net] 月月火水木金金
56 名前:デフォルトの名無しさん mailto:sage [2021/07/03(土) 12:07:58.36 ID:gq7PWL9B.net] オプションの話なんてどうでもいいけど 1日を左上始まりの方が合理的だと思う
57 名前:デフォルトの名無しさん mailto:sage [2021/07/03(土) 18:17:25.88 ID:IfvioC2j.net] どうかな 多くの場合 月の開始日を固定するより 曜日を固定した方が有用だ 月によって
58 名前:デフォルトの名無しさん mailto:sage [2021/07/03(土) 18:34:34.91 ID:8vTMQXC9.net] 曜日固定の暦も提案されたけど採用されることはなかったんだよね
59 名前:デフォルトの名無しさん mailto:sage [2021/07/03(土) 19:07:03.68 ID:uSbSUvL9.net] まあ大抵の人は基本的に曜日で休みが決まってたりするしな
60 名前:デフォルトの名無しさん mailto:sage [2021/07/03(土) 19:13:38.83 ID:DPpwWmVc.net] 28日×13月、最終月で調整、がシンプルで良かったのにな 年初の時期も夏至とか分かりやすい日にすれば良かったのに
61 名前:デフォルトの名無しさん mailto:sage [2021/07/03(土) 21:26:36.17 ID:IfvioC2j.net] 暦は農業をするうえで細かく日を読む必要から作られ発展してきた 農閑期には日付が定められなかったことも ヨーロッパの言語で前半は神の名が付けられ、後ろの方がテキトーなことからもその時代における重要度が推し量れる
62 名前:デフォルトの名無しさん mailto:sage [2021/07/03(土) 21:35:30.23 ID:TQwtnc11.net] そもそも古代ローマの暦では11-12月は名前がなかった
63 名前:デフォルトの名無しさん [2021/07/04(日) 00:40:14.83 ID:FJOBYcj7.net] エチオピアではエチオピア歴が今も使われており13月があったりする。 https://www.hope.or.jp/2019/09/13/ethiopian-calendar
64 名前:39 mailto:sage [2021/07/04(日) 08:11:39.86 ID:iOGAyFs7.net] >>36 Ruby お題の仕様を拡張してみた 前後の月の日付も週単位で表示 ・前月日付は週はじめから最小1日から最大7日 ・翌月日付は週末まで最小0日から最大6日 require 'date' str = '2021 7 0' y, m ,s = str.scan( /\d+/ ).map( &:to_i ) a = '日月火水木金土'.chars.rotate(s) sw = (Time.new( y, m, 1 ) - s % 7).wday ( (sw == 0)? 7 : sw ).downto(1){|d| a << Date.new( y, m, 1 ).prev_day( d ).mday.to_s } 1.upto( Date.new( y, m, 1 ).next_month.prev_day.mday ){|d| a << '%2d' % d } (-a.size % 7).times{|d| a << '%2d' % (d+1) } a.each_slice(7){|w| puts w * ' ' }
65 名前:39 mailto:sage [2021/07/05(月) 00:26:38.86 ID:e4Vm80Jj.net] >>36 Ruby >>63 > sw = (Time.new( y, m, 1 ) - s % 7).wday は間違いでした require 'date' str = '2021 7 0' y, m, s = str.scan( /\d+/ ).map( &:to_i ) m1 = Date.new( y, m, 1 ) sw = m1.wday - s % 7 pmd = m1.prev_day.mday a = '日月火水木金土'.chars.rotate(s) ( pmd - ((sw == 0)? 7 : sw) + 1 ).upto( pmd ){|d| a << d.to_s } 1.upto( m1.next_month.prev_day.mday ){|d| a << '%2d' % d } (-a.size % 7).times{|d| a << '%2d' % (d+1) } a.each_slice(7){|w| puts w * ' ' }
66 名前:39 mailto:sage [2021/07/05(月) 01:08:34.16 ID:e4Vm80Jj.net] >>64 もバグ有り > sw = m1.wday - s % 7 sw = (m1.wday - s) % 7
67 名前:デフォルトの名無しさん mailto:sage [2021/07/05(月) 17:31:47.07 ID:7Yd2cijs.net] >>28-31 28はPowerShell版 お題:クロームブラウザーのヘッドレスモードを使って何かを作る google-chrome --headless --disable-gpu --hide-scrollbars --window-size=700,8000 --virtual-time-budget=10000 --screenshot="$HOME/Pictures/$(date +"%H_%M_%S").png" 'yahooリアルタイム検索結果のURL' --window-size=はスクリーンショットを撮る範囲 --virtual-time-budget=は検索結果が表示されるまで時間がかかるサイトで使う。これがないと検索結果のスクリーンショットがうまく撮れない。10000ミリ秒=10秒。
68 名前:デフォルトの名無しさん mailto:sage [2021/07/06(火) 12:39:02.75 ID:gfjghTPI.net] 数学板から お題 Σ[n:2〜∞]cos(n)/log(n)を小数第10まで求めよ 元々収束するか?で収束するなら10桁計算せよってついてたけど今のところ10桁計算してみせた人おらず もちろん収束遅すぎて少し工夫しないと10桁出すのは難しいかなと
69 名前:デフォルトの名無しさん [2021/07/06(火) 18:27:19.16 ID:ifvAZrxB.net] >>67 わからない。
70 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 06:44:52.69 ID:GHc1zSP4.net] >>67 チェザロ平均考えるとかかな 1万項の平均雑に計算したら-1.34までは収束してる感じ https://ja.wikipedia.org/wiki/チェザロ平均
71 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 07:00:20.59 ID:GHc1zSP4.net] >>67 Haskell sums xs = scanl1 (+) xs ss n = sums [cos k / log k | k <- [2..n]] avr xs = sum xs / (fromIntegral $ length xs) 結果: λ> avr $ ss 10000 -1.3422141860097583 (0.02 secs, 6,244,872 bytes) λ> avr $ ss 100000 -1.3422187431198473 (0.21 secs, 61,066,720 bytes) λ> avr $ ss 1000000 -1.3422195503566596 (1.97 secs, 609,383,904 bytes) λ> avr $ ss 10000000 -1.3422195021937073 (48.08 secs, 6,092,457,440 bytes) これ以上は厳しそうだから何か工夫しないといけないけど8桁辺りまでは収束してそう
72 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 07:19:49.97 ID:GHc1zSP4.net] 8桁って小数第七位ね
73 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 19:16:52.25 ID:5d+e1myw.net] この文献 https://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1084-4.pdf をもとに C #include <math.h> #include <stdio.h> int main(){ double p=12.0,q=7.0,s=0; long n,nmax=166; for(n=2;n<nmax;n++) s+=(cos(n)/log(n))*0.5*erfc(n/p-q); printf("s=%-20.16lf, N=%d\n",s,nmax-2); return 0; } s=-1.3422195101745578 , N=164
74 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 20:36:04.14 ID:MZbePiNM.net] >>67 収束する。 B_k := Σ[n : 2..k] cos(n) |B_k| = |cos((k + 1) / 2) sin(k / 2) / sin(1 / 2) - (1 + cos(1))| (see https://math.stackexchange.com/questions/225941/proving-sum-limits-k-0n-coskx-frac12-frac-sin-frac2n12x) <= 1 / sin(1 / 2) + 1 + cos(1) ... (i) a_n := 1 / log(n) Σ[n : 2..∞] |a_{n + 1} - a_n| = Σ[n : 2..∞] |log(n / (n + 1)) / (log(n) log(n + 1))| <= Σ[n : 2..∞] |log(2) / log(n + 1)^2| < ∞ ... (ii) lim a_n = 0 as n -> 0 ... (iii) (i), (ii), (iii) よりアーベルの級数判定法の条件を満たすので所与の級数は収束する。
75 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 21:23:56.34 ID:GHc1zSP4.net] >>72 すごい あんまり読めてないけど交代級数じゃなくても使えるの?
76 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 21:39:28.53 ID:5d+e1myw.net] >>74 6節でFFTの計算とともに使ってるのでフーリエ級数全般に使えるはず
77 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 22:23:37.48 ID:7LucU1Ml.net] >>5 の2 Dart版 void main() { DateTime today = new DateTime.now(); print( "${today.year.toString()}/${ today.month.toString().padLeft(2,'0')}/${ today.day.toString().padLeft(2,'0')}/第${ ((today.day + 6) / 7).floor()}${ {1:'月曜日',2:'火曜日',3:'水曜日',4:'木曜日',5:'金曜日',6:'土曜日',7:'日曜日'}[today.weekday]}/${ today.hour.toString().padLeft(2,'0')}:${ today.minute.toString().padLeft(2,'0')}/" ); }
78 名前:デフォルトの名無しさん mailto:sage [2021/07/07(水) 22:51:04.45 ID:GHc1zSP4.net] >>75 やっぱり交代級数限定の話っぽいけど何で今回上手く行ってるのか良く分からない
79 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 03:52:07.59 ID:s4XLTZzk.net] お題 2乗〜6乗 自然数nに対して方程式 n = p^2+q^3+r^4+s^5+t^6 の整数解をひとつ探し出す関数を実装せよ 例 -2 → [1,-2,1,0,0] -1 → [1,-2,1,1,9] 0 → [1,-1,0,0,0] 1 → [1,0,0,0,0] 2 → [1,1,0,0,0] 100 → [2,0,0,2,2] 2021 → [3382713530574301803635446275486,-563785588429051426890762429768,2252569709434420,5488,750856569811473]
80 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 04:00:54.83 ID:s4XLTZzk.net] 訂正 -2 → [2,-2,1,1,0] -1 → [0,-1,0,0,0]
81 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 05:27:57.77 ID:qAe+ZLCy.net] -1と-2は自然数じゃない
82 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 13:17:19.10 ID:s4XLTZzk.net] >>80 ですな -1,-2は抜いて じゃ追加で 3→[1,1,1,0,0] 10→[1,2,1,0,0] 1000→[1,-3,1,4,1] などなど
83 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 16:30:29.39 ID:s75CxDCd.net] >>81 n<=10^6 を力業で、先頭と最後の101件のみ表示 https://ideone.com/LjkJHe
84 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 20:59:05.44 ID:qAe+ZLCy.net] 寧ろ定義域を整数全体にすれば?
85 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 22:08:26.55 ID:DfqCC9n+.net] >>83 元々整数のつもりだったのが筆が滑りましたw お好きな方でという事で 自然数に限定して楽になる事もないと思うけど
86 名前:デフォルトの名無しさん [2021/07/22(木) 03:13:11.19 ID:o3SPPMDQ.net] >>78 Kotlin https://paiza.io/projects/ZteBpLjf11ybdKK6tORg5Q 無念無想で何も考えずにただ作った。
87 名前:デフォルトの名無しさん mailto:sage [2021/07/22(木) 13:52:09.29 ID:mzts8Rpt.net] 元の問題 面白い問題おしえて〜な 37問目 https://rio2016.5ch.net/test/read.cgi/math/1624644393/543 元の問題は7乗まで使って桶だったけど6乗までの解答が出た https://rio2016.5ch.net/test/read.cgi/math/1624644393/588 あくまでプログラムの話、数学の部分はどうでもいいという方は参考にして下さい この方法はn-t^5-76843が6630の倍数になるような整数tが取れる事を使います(t:0〜6629の中で探す)
88 名前:デフォルトの名無しさん mailto:sage [2021/07/22(木) 20:25:25.04 ID:giJnvKaJ.net] >>86 5次以下にはできない証明は?
89 名前:デフォルトの名無しさん mailto:sage [2021/07/22(木) 20:30:40.90 ID:eIP4GB5u.net] >>87 それはまだ数学板では5以下でも可能も5以外では不可能もどっちも証明されてません
90 名前:デフォルトの名無しさん mailto:sage [2021/07/24(土) 11:44:46.01 ID:uYrXTofe.net] お題: 端末上に地球を模した円の描画を行い、入力された緯度、経度のおおよその地点に印を付けろ ただし描画される円の中心は常に日本の東京とし、東京が見えるようにすること 描画される円の大きさは自由とする 入力された座標が東京の裏側の半球上にあって印を描画できない場合は、印を描画しないか、あるいは円(地球)を透過させて印を描画する 地球の半径=6,371 km 東京の経度=139°41′30″ 東京の緯度=35°41′22″ *出題者は自分で実装してません
91 名前:デフォルトの名無しさん mailto:sage [2021/07/24(土) 11:48:58.50 ID:2jz91/WX.net] >>89 画面の上を地球上のどの方位にするとか、平行投影なのか透視投影なのか画角どうするかとか決めないといけないんでないの?
92 名前:デフォルトの名無しさん mailto:sage [2021/07/24(土) 11:53:24.04 ID:uYrXTofe.net] >>89 >>90 画面の上端を北とします 投影方法と画角はよくわからないので自由とします^^;
93 名前:デフォルトの名無しさん mailto:sage [2021/07/24(土) 12:18:19.24 ID:/U+1YhTs.net] 地球は球体じゃないから無理じゃない?
94 名前:デフォルトの名無しさん mailto:sage [2021/07/25(日) 16:25:19.73 ID:YgX/LOmt.net] 地形データってどっかから取って来れるの?そこも自作しろと?それとも地形描画なしのツルツルの地球で良い?
95 名前:デフォルトの名無しさん mailto:sage [2021/07/26(月) 04:06:01.70 ID:uFE88Z/4.net] いいよ
96 名前:デフォルトの名無しさん mailto:sage [2021/07/27(火) 08:42:26.61 ID:3vSla0fp.net] >>5 の2 JavaScript版 let today = new Date() console.log( today.getFullYear().toString() + '/' + today.getMonth().toString().padStart(2,'0') + '/' + today.getDate().toString().padStart(2,'0') + '/' + '第' + ( Math.floor( ( today.getDate() + 6 ) / 7 ) ).toString() + ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'][today.getDay()] + '/' + today.getHours().toString().padStart(2,'0') + ':' + today.getMinutes().toString().padStart(2,'0') + '/' )
97 名前:96 mailto:sage [2021/07/28(水) 13:12:24.23 ID:D9Z9/eJz.net] >>20 Perl5、DPで解けないかなと考えてたけど、すぐには思いつかずnaiveな解法 use List::Util 'max'; my $m; sub f { my ($a, $b, $c) = @_; return () if $m and $m <= $c; my $aa = $a * $c - $b; return ($m = $c) if 0 == $aa; my @s; if (0 < $aa) { my $bc = $b * $c; @s = f($aa, $bc, max(int($bc / $aa), $c + 1)); @s = ($c, @s) if @s; } my @t = f($a, $b, max(int($b / $a), $c + 1)); if (@s and @t) { $s[-1] < $t[-1] ? @s: @t; } else { @s ? @s: @t; } } $m = 0; my @a = f(37, 60, 1); printf "37 / 60 = %s\n", join ' + ', map{"1/$_"} grep{$_} @a; #$m = 0; my @a = f(3, 1, 1); 実行結果 ~ $ perl 20_20_re_expan.pl 37 / 60 = 1/4 + 1/5 + 1/6 なお、この解法だと 3/1 = は時間がかかりすぎて解けない
98 名前:デフォルトの名無しさん mailto:sage [2021/08/08(日) 11:08:25.71 ID:KegFD0tb.net] 平面上に円をおくと、円周上に整数点ができることがあるが それがちょうど47個の円の最小半径は? ここで前にもあったとおもったが、答わからん
99 名前:デフォルトの名無しさん [2021/08/10(火) 04:18:36.48 ID:RT5RB9Hc.net] 解き方がわからん。
100 名前:蟻人間 mailto:sage [2021/08/11(水) 00:16:58.90 ID:yQA623uX.net] お題: (C/C++/Rust限定) 与えられたテキストファイルのエンコーディングを早く正確に判定するプログラムを作れ。 判定内容はASCIIのみ、UTF-8、UTF-16、Shift_JIS、バイナリのいずれかとBOMの有無とする。 ファイル先頭にBOMがある場合はBOMの意味を優先するものとする。 ASCIIではない場合はファイル先頭より256バイト以降は無視するものとする。 テキストファイルがUTF-8かShift_JISか区別できないときはUTF-8の判定を優先するものとする。 判定にかかった時間をミリ秒単位で測定せよ。 UTF-16 BEとEUC-JPはバイナリとみなしてもよい。