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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2020/07/14(火) 13:53:46.47ID:jW5p6F/e
プログラミングのお題スレです。

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

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/

0952デフォルトの名無しさん2020/11/15(日) 04:26:34.92ID:UMNa3GdF

0953デフォルトの名無しさん2020/11/15(日) 18:33:50.31ID:UMNa3GdF
お題
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください

入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴

0954デフォルトの名無しさん2020/11/15(日) 18:40:06.62ID:KOddDUPF
>>953 Ruby

gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size}

# => 0.3333333333333333

0955デフォルトの名無しさん2020/11/15(日) 18:41:22.95ID:UMNa3GdF
はやいな

0956デフォルトの名無しさん2020/11/15(日) 20:20:51.56ID:8j4ATkh0
>>953 JavaScript
let hits = 0
const input = '曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴'.split `,`
input.reduce((acc, v) => (hits += acc == v ? 1 : 0, v))
console.log(hits / (input.length - 1))
//=> 0.3333333333333333

0957デフォルトの名無しさん2020/11/15(日) 20:22:58.52ID:KOddDUPF
>>956
.split(`,`) では

0958デフォルトの名無しさん2020/11/15(日) 20:23:55.05ID:KOddDUPF
すまん。バッククウォートだった。

0959デフォルトの名無しさん2020/11/16(月) 00:51:51.08ID:lyH8UsEw
>>947
@echo off &setlocal enabledelayedexpansion
for /f "delims=:" %%A in ('findstr /en ARGS "%~0"') do set /a L=%%A, n=12 &REM nは出力個数
for /f "usebackq skip=%L% delims=" %%A in ("%~0") do set "i="&(for %%B in (%%A) do set /a i+=1)&echo %%A&set "S="&(for /L %%D in (1,1,%n%) do call :RAND!i! %%A&(if defined r set "S=!S! !r!" &set "r="))&echo=!S!&echo=
set /p<nul=終了&pause >nul &exit /b

:: a〜b間の偶数をrandom出力
:RAND2
setlocal &REM VAR= a b c r f
if %1 NEQ %2 ((if %1 LSS %2 (set /a a=%1+1, b=%2) else set /a a=%2+1, b=%1) &set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1") else set /a "f=%1&1" &if !f! EQU 0 set r=%1
endlocal &set "r=%r%" &exit /b

:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND3
setlocal &REM VAR= a r
if %2 NEQ 0 set /a "a=(%3-%1)/%2" &if !a! LSS 0 set "a=" &REM [ else set "a="] 省略:上位環境でaが使用されている場合には必要
set /a "r=((%random%<<15)+%random%)%%(a+1)*%2+%1" &REM set /aでは存在しない変数は0として扱われる
endlocal &set "r=%r%" &exit /b
:: ARGS
-3 9
3 -5
4 4
5 5
1 0 2
-5 2 2
2 -3 -12
2 3 -4
-256 040 0x100
0400 ~0x1F ~0xff

0960デフォルトの名無しさん2020/11/16(月) 03:31:51.13ID:apQPm4KR
>>954
haskell

import Data.List

str = "曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴"

accuracy x = let
pairs = id
. map ( take 2 . reverse ) -- [ "BA", "CB", "DC",..]
. drop 2 -- [ "AB", "ABC",..]
. inits -- [ "", "A", "AB",..]
. filter ( /= ',' ) -- "ABCD.."
$ x
successes = filter ( \x -> head x == last x ) pairs
nP = genericLength pairs
nS = genericLength successes
in nS / nP

main = print $ accuracy str

0961デフォルトの名無しさん2020/11/16(月) 03:32:04.47ID:lyH8UsEw
>>953 bat
@echo off &setlocal enabledelayedexpansion
set /a i=-1, match=0
for %%A in (曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴) do (
set /a i+=1
if "!S!"=="%%A" set /a match+=1
set s=%%A
)
:: echo 一致数/比較回数 : %match%/%i%
set /a a=match, b=i
:EUCLID_GCD
if %a% NEQ 0 set /a "c=a, a=b%%a, b=c" &goto :EUCLID_GCD
set /a match/=b, i/=b
if %match% NEQ 0 (echo 確率 : %match%/%i%) else echo 確率 : 0
pause

0962デフォルトの名無しさん2020/11/20(金) 19:52:50.75ID:HawO8Ftl

0963とくめい2020/11/24(火) 01:34:45.23ID:SQQDs1Pp
kakeruyamasato@gmail.comこのメアドを悪用してみせて

0964デフォルトの名無しさん2020/11/24(火) 08:07:25.33ID:aaTbFie9
通報しますた

0965デフォルトの名無しさん2020/11/25(水) 01:49:24.25ID:O2Mln20T

0966デフォルトの名無しさん2020/11/26(木) 19:02:45.00ID:ACzSTlzf
>>940
a,b,c = [1,2,10]
puts ((a..c) % b).to_a.shuffle

0967デフォルトの名無しさん2020/11/27(金) 01:08:20.91ID:bIFui41M
>>966
なんていう言語?

0968デフォルトの名無しさん2020/11/27(金) 02:57:17.73ID:ocMZsxYX
>>967
rubyでしょ

0969デフォルトの名無しさん2020/11/27(金) 19:31:40.66ID:Pnsgs34G
rubyだったか。

0970デフォルトの名無しさん2020/11/28(土) 00:37:28.60ID:PcPNtVOH
%がわからないって怒られた

0971デフォルトの名無しさん2020/11/28(土) 07:20:49.13ID:mYohOVrw
お題
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

0972デフォルトの名無しさん2020/11/28(土) 07:34:45.42ID:CtkueG9H
>>971 bat
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday

0973デフォルトの名無しさん2020/11/28(土) 08:05:44.72ID:nEfgRBi9
意外と難しいな

0974デフォルトの名無しさん2020/11/28(土) 08:40:11.81ID:wyvnQiBB
>>971 Ruby

puts Date::DAYNAMES.rotate

# => Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

0975デフォルトの名無しさん2020/11/28(土) 09:00:26.43ID:2Muxtrov
>>966
問題の解釈違わねえ?

0976デフォルトの名無しさん2020/11/28(土) 09:12:26.58ID:nEfgRBi9
>>971 js
const range = v => [...Array(v).keys()]
const DAY_MS = 24 * 60 * 60 * 1000

const weekday = d => d.toLocaleString('en', { weekday: 'long' })

console.log(range(7).map(i => weekday(new Date((i + 4) * 24 * 60 * 60 * 1000))).join("\n"))

0977デフォルトの名無しさん2020/11/28(土) 11:36:22.72ID:FGpMIdZG
>>970
( 1..10 ) % 2

range に、% というメソッドは無い!

0978デフォルトの名無しさん2020/11/28(土) 12:27:13.39ID:GOv1h+p2
>>977
NEWS for Ruby 2.6.0
2.5.0 以降の変更
https://docs.ruby-lang.org/ja/2.6.0/doc/news=2f2_6_0.html
> Range
> 新規メソッド
> Range#% が追加されました。 [feature#14697]

0979デフォルトの名無しさん2020/11/28(土) 12:38:57.57ID:L52xXSLK
予想通りの流れになってくれて何より

09809772020/11/28(土) 14:12:40.28ID:FGpMIdZG
ruby -e 'p ( ( 1..5 ) % 2 ).to_a'
#=> [1, 3, 5]

2 は、各ステップの大きさ

0981デフォルトの名無しさん2020/11/28(土) 16:09:49.88ID:myGQAvEM
ダメだ
オンラインでRuby 2.6使えるとこ見つからない
どっかない?

0982デフォルトの名無しさん2020/11/28(土) 16:34:18.46ID:gB71rnHS
>>981
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
https://www.jdoodle.com/execute-ruby-online/

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
https://techiedelight.com/compiler/

ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
https://paiza.io/en/projects/new?language=ruby

0983デフォルトの名無しさん2020/11/28(土) 16:39:08.00ID:nEfgRBi9
jdoodle初めて知った
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう

0984デフォルトの名無しさん2020/11/28(土) 17:26:12.48ID:FGpMIdZG
paiza は、いつも新しい

codepad は、古いような気がする

0985デフォルトの名無しさん2020/11/28(土) 17:30:47.77ID:FGpMIdZG
漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

対応している言語を表示すると、
anyenv install --list

Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv

Julia のjlenv も追加された。
anyenvと同様のツールに、asdf もある

0986デフォルトの名無しさん2020/11/28(土) 17:57:16.56ID:myGQAvEM
>>982
thx
でもiphoneでどのサイトもコピペができないorz
なんでなんだろう?

0987デフォルトの名無しさん2020/11/28(土) 18:01:21.11ID:myGQAvEM
とりあえず自分で打ち込んで試した
shuffleはランダムに並べ替えみたいだからちょっと違うかな

0988デフォルトの名無しさん2020/11/28(土) 22:44:23.07ID:wyvnQiBB
>>987
shuffleの代わりにsampleを使うといい

0989デフォルトの名無しさん2020/11/29(日) 06:10:23.39ID:LsAPFm47
>>971 bat
:: 年月日を元に曜日を返す。 No args validation. 引数が無ければシステム時間
@echo off &setlocal enabledelayedexpansion
if not "%~1"=="" set "date=%~1"
:: set "date=2020.09.09"
set i=0
for %%a in (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Y,M,D) do set "wd!i!=%%a"&set /a i+=1
set i=7
for /f "tokens=1-3 delims==/-.:,;()_・年月日 " %%a in ("%date%") do for %%d in (%%a %%b %%c) do for /f "tokens=* delims=0" %%e in ("%%d") do for /f %%i in ("!i!") do set /a !wd%%i!=%%e,i+=1
:: echo=%Y%,%M%,%D%,
set /a h=(365*Y+(Y-1)/4-(Y-1)/100+(Y-1)/400+(M+7)/10*(30*(M-3)+(3*M-7)/5+59+D-1)+(1/(Y%%4+1)-1/(Y%%100+1)+1/(Y%%400+1)+(M+7)/10)/2)%%7
echo=!wd%h%!
pause&exit /b

0990デフォルトの名無しさん2020/11/29(日) 12:05:03.89ID:POmPIOqu
>>971 Julia
using Dates
for w=1:7
println(Dates.format(Date(1,1,w), "E"))
end

0991デフォルトの名無しさん2020/11/29(日) 14:25:29.24ID:KxupmnON
>>971
Kotlin script

println(java.text.DateFormatSymbols(java.util.Locale.ENGLISH).getWeekdays().let { wd -> ((2..6) + 1).map { wd[it] } }.join
ToString("\n"))

Javaのライブラリをそのまま使ってやってるので1が日曜で7が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。

09922532020/11/29(日) 15:02:42.80ID:onV9IrOo
>>971Perl5

use Time::Piece;
use Time::Seconds;
$t = Time::Piece->strptime('210201','%y%m%d');
for (0..6) { print $t->fullday."\n"; $t += ONE_DAY }


実行結果
~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

09932532020/11/29(日) 17:21:11.49ID:onV9IrOo
>>971 Perl5、>>992 のもうチョイ手抜き版

use Time::Piece;
for (1..6,0) { print Time::Piece::fullday([(0)x6, $_])."\n" }

~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

0994デフォルトの名無しさん2020/11/29(日) 20:08:13.17ID:idUZlJAo

0995デフォルトの名無しさん2020/11/29(日) 20:39:34.37ID:idUZlJAo
お題
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください


入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]

0996◆QZaw55cn4c 2020/11/29(日) 21:07:17.97ID:POdKASdd
>>995
>サブ配列
の定義を教えてください

0997デフォルトの名無しさん2020/11/29(日) 21:15:00.96ID:sOEBQUsx
値が連続しないサブ配列とは?

0998デフォルトの名無しさん2020/11/29(日) 21:21:35.35ID:idUZlJAo
>>996
教えません

>>997
[1, 4, 2, 1, 4]
とか

0999デフォルトの名無しさん2020/11/29(日) 21:26:09.30ID:sOEBQUsx
[4, −1, 2, 1]は値が連続するサブ配列で
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?

1000デフォルトの名無しさん2020/11/29(日) 21:34:10.34ID:idUZlJAo
>>999
教えません

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

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


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

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

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

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

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