プログラミングのお題スレです。
【出題と回答例】
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/
プログラミングのお題スレ Part18
レス数が1000を超えています。これ以上書き込みはできません。
2020/07/14(火) 13:53:46.47ID:jW5p6F/e
919デフォルトの名無しさん
2020/11/08(日) 00:15:55.29ID:ct8WHwWl バッチよくやってるな
batにトランスパイルできるもっといい感じの構文の言語とかないの
batにトランスパイルできるもっといい感じの構文の言語とかないの
920デフォルトの名無しさん
2020/11/08(日) 02:24:23.73ID:vLTv8mzL バッチで>>892やる猛者はいないのか?
QZならできそうだがだんまりか?
QZならできそうだがだんまりか?
921デフォルトの名無しさん
2020/11/08(日) 02:34:25.46ID:HKu5GaPi >>920
私は C しか書けません
私は C しか書けません
923デフォルトの名無しさん
2020/11/08(日) 03:56:26.07ID:YnyAcD/m >>919
こんなのならあった
https://github.com/imachug/BatchBuilder
moduleサポート:
export say_hello
echo Hello, %1!
end export
でエクスポート
import say_hello Takashi
でインポート(というかecho Hello, Takashi!に置き換わる)
値返却 (return) サポート:
export ask q
set /p result=%q%?
return %result%
end export
export delete_dir
import -> agree ask "Delete %1"
if "%agree%" == "yes" (
rmdir /S /Q %1
)
end export
globalキーワード:
module内の変数はデフォでlocal。
global変数にしたいときはglobalキーワードを使う。
global my_var=hogehoge
こんなのならあった
https://github.com/imachug/BatchBuilder
moduleサポート:
export say_hello
echo Hello, %1!
end export
でエクスポート
import say_hello Takashi
でインポート(というかecho Hello, Takashi!に置き換わる)
値返却 (return) サポート:
export ask q
set /p result=%q%?
return %result%
end export
export delete_dir
import -> agree ask "Delete %1"
if "%agree%" == "yes" (
rmdir /S /Q %1
)
end export
globalキーワード:
module内の変数はデフォでlocal。
global変数にしたいときはglobalキーワードを使う。
global my_var=hogehoge
924デフォルトの名無しさん
2020/11/08(日) 03:57:27.82ID:YnyAcD/m >>923 の続き
再帰サポートのための2つのディレクティブ:
@safe_recursion
@follow_local
クラスとオブジェクト:
クラス作成
class ClassTest
export say_hello
echo Hello, %1!
end export
export say_bye
echo Bye, %1!
end export
end class
オブジェクト生成
new -> my_class ClassTest
メソッド呼び出し
import %my_class%.say_hello Takashi
import %my_class%.say_bye Takashi
他、クラスフィールドやマジックメソッドなど
再帰サポートのための2つのディレクティブ:
@safe_recursion
@follow_local
クラスとオブジェクト:
クラス作成
class ClassTest
export say_hello
echo Hello, %1!
end export
export say_bye
echo Bye, %1!
end export
end class
オブジェクト生成
new -> my_class ClassTest
メソッド呼び出し
import %my_class%.say_hello Takashi
import %my_class%.say_bye Takashi
他、クラスフィールドやマジックメソッドなど
925デフォルトの名無しさん
2020/11/08(日) 04:20:05.05ID:YnyAcD/m >>919
もうひとつ。
https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script
>>923 がbatの拡張といったおもむきなのに対して、こちらは専用DSLからのトランスパイラ。Python製。
二値の平均:
avg(arg1, arg2, average)
fun avg {
num a = larg1 + larg2
num a = a/2
"echo" a
}
以下にトランスパイルされる
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call :avg %1,%2,%average%
@EXIT /B 0
:avg
set /a a=%~1 + %~2
set /a a=%a% / 2
echo %a%
EXIT /B 0
0から9999まで表示:
for (num i = 0;i < 10000;i+1){
"echo" i
}
トランスパイル結果略
もうひとつ。
https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script
>>923 がbatの拡張といったおもむきなのに対して、こちらは専用DSLからのトランスパイラ。Python製。
二値の平均:
avg(arg1, arg2, average)
fun avg {
num a = larg1 + larg2
num a = a/2
"echo" a
}
以下にトランスパイルされる
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call :avg %1,%2,%average%
@EXIT /B 0
:avg
set /a a=%~1 + %~2
set /a a=%a% / 2
echo %a%
EXIT /B 0
0から9999まで表示:
for (num i = 0;i < 10000;i+1){
"echo" i
}
トランスパイル結果略
926デフォルトの名無しさん
2020/11/08(日) 05:03:48.08ID:YnyAcD/m >>919
シェルスクリプトからの変換系:
https://github.com/daniel-sc/bash-shell-to-bat-converter
https://github.com/sagiegurari/shell2batch
あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
https://github.com/batsh-dev-team/Batsh
タイプ的には >>925 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。
シェルスクリプトからの変換系:
https://github.com/daniel-sc/bash-shell-to-bat-converter
https://github.com/sagiegurari/shell2batch
あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
https://github.com/batsh-dev-team/Batsh
タイプ的には >>925 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。
927デフォルトの名無しさん
2020/11/08(日) 05:16:53.07ID:YnyAcD/m >>926
moongiftに紹介記事があった。
https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…
moongiftに紹介記事があった。
https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…
928デフォルトの名無しさん
2020/11/08(日) 08:18:54.23ID:ct8WHwWl >>926
これきれいだな
これきれいだな
929デフォルトの名無しさん
2020/11/09(月) 23:19:00.95ID:biYC5NlX もうすぐポッキーの日
[お題] 人口合計でオール1
URLのページに都道府県別の人口が載っている。
今回使用するのは、2019/10のデータ
https://ideone.com/R4PCiQ
同じ県は一回のみで、異なる県を何県でも選んでよい。
(つまり選び方は全部で 2^47 種類)
人口合計が"1"のみの数字となる選び方は何種類あるか?
(実質、1111万1111人, 1億1111万1111人になる選び方)
※一発正解問題、実行時間3秒程度。
同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。
[お題] 人口合計でオール1
URLのページに都道府県別の人口が載っている。
今回使用するのは、2019/10のデータ
https://ideone.com/R4PCiQ
同じ県は一回のみで、異なる県を何県でも選んでよい。
(つまり選び方は全部で 2^47 種類)
人口合計が"1"のみの数字となる選び方は何種類あるか?
(実質、1111万1111人, 1億1111万1111人になる選び方)
※一発正解問題、実行時間3秒程度。
同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。
930デフォルトの名無しさん
2020/11/09(月) 23:52:24.94ID:XExSNiE1 11111111 は43?
111111111はオンラインコンパイラでタイムアウトorz
111111111はオンラインコンパイラでタイムアウトorz
931デフォルトの名無しさん
2020/11/10(火) 00:38:20.57ID:duQVrAg3 面白そうなお題
932デフォルトの名無しさん
2020/11/10(火) 00:38:46.30ID:qJS2/p90 111111111 は650かな?
933デフォルトの名無しさん
2020/11/10(火) 00:45:23.62ID:qJS2/p90 とりあえず
Haskell
spp19 = (小さいもの順に並べた元データ)
findSum :: Int -> [Int] -> Int
findSum x ys = case ys of
[] -> 0
( z : zs ) | z > x -> 0
( z : zs ) | z == x -> 1
( z : zs ) | otherwise ->
( findSum x zs )
+ ( findSum ( x - z ) zs )
main = do
print $ findSum 15105031 spp19
print $ findSum 11111111 spp19
----
650
43
Haskell
spp19 = (小さいもの順に並べた元データ)
findSum :: Int -> [Int] -> Int
findSum x ys = case ys of
[] -> 0
( z : zs ) | z > x -> 0
( z : zs ) | z == x -> 1
( z : zs ) | otherwise ->
( findSum x zs )
+ ( findSum ( x - z ) zs )
main = do
print $ findSum 15105031 spp19
print $ findSum 11111111 spp19
----
650
43
934デフォルトの名無しさん
2020/11/10(火) 02:25:54.45ID:903MPdZb batコーイ!!
935デフォルトの名無しさん
2020/11/10(火) 02:49:15.00ID:VuEsWlWs936デフォルトの名無しさん
2020/11/10(火) 13:44:24.83ID:3xGJBleZ 典型的なdp問題じゃねえの
937929
2020/11/10(火) 17:29:30.75ID:q5cN/btj >>929
・想定解はDPの数え上げ
さすがに1.1億×47は苦しいので、
1.1億に関しては、(全人口 - 1.1億)で計算する。
そうすれば、1600万×47の計算量で済む。
https://ideone.com/R4PCiQ
下にpython(numpy)で想定解追加
・想定解はDPの数え上げ
さすがに1.1億×47は苦しいので、
1.1億に関しては、(全人口 - 1.1億)で計算する。
そうすれば、1600万×47の計算量で済む。
https://ideone.com/R4PCiQ
下にpython(numpy)で想定解追加
938253
2020/11/11(水) 00:47:47.87ID:vox+S3u3 (´・ω・`)
939デフォルトの名無しさん
2020/11/11(水) 18:19:57.16ID:NMl7/e2v 暇つぶしに>>933がどれくらい再帰呼び出し読んでるか数えてもらった
findSum' x ys = let ( z : zs ) = ys in case ys of
[ ] -> 0
_ | z >= x -> 0
otherwise -> ( findSum' x zs ) + ( findSum' ( x - z ) zs ) + 2
----
2021619696
20億回ちょい
dpだと15,105,031×47=709,936,457で7億回ちょいだから35%ほどになるのか
勉強になった
findSum' x ys = let ( z : zs ) = ys in case ys of
[ ] -> 0
_ | z >= x -> 0
otherwise -> ( findSum' x zs ) + ( findSum' ( x - z ) zs ) + 2
----
2021619696
20億回ちょい
dpだと15,105,031×47=709,936,457で7億回ちょいだから35%ほどになるのか
勉強になった
940デフォルトの名無しさん
2020/11/12(木) 15:39:00.87ID:VX9X1ew1 お題1
1〜nまでの偶数をランダムに出力してください
お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください
例
入力: 1 2 10
出力:
1
1
3
9
1
7
5
1〜nまでの偶数をランダムに出力してください
お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください
例
入力: 1 2 10
出力:
1
1
3
9
1
7
5
941デフォルトの名無しさん
2020/11/12(木) 15:58:04.88ID:uK53dAw4 >>940 を読んで、やっぱり日本語は非論理的な言語だな、と思った。
942デフォルトの名無しさん
2020/11/12(木) 16:04:34.29ID:VX9X1ew1 書き手の問題だと思うよ
943デフォルトの名無しさん
2020/11/12(木) 18:42:17.55ID:HU5jtk1k オレは深まりゆく秋を感じた
944デフォルトの名無しさん
2020/11/12(木) 19:26:25.71ID:VX9X1ew1 ふーけゆくー秋の夜ー
945デフォルトの名無しさん
2020/11/12(木) 19:34:08.43ID:nzp5rNOe >>940 Ruby
p rand(2..$_.to_i) & -2 # => 32 while gets
-*- input -*-
2
10
100
-*- output -*-
2
6
78
p eval$_.gsub(/\s+/,'%s')%%w[.step(*[ , ].rotate).to_a.sample]while gets
-*- input -*-
1 2 10
1 2 10
10 5 99
-*- output -*-
7
1
85
p rand(2..$_.to_i) & -2 # => 32 while gets
-*- input -*-
2
10
100
-*- output -*-
2
6
78
p eval$_.gsub(/\s+/,'%s')%%w[.step(*[ , ].rotate).to_a.sample]while gets
-*- input -*-
1 2 10
1 2 10
10 5 99
-*- output -*-
7
1
85
946デフォルトの名無しさん
2020/11/12(木) 23:53:28.13ID:HU5jtk1k そゆいみか
入力パースするとこは略して
Haskell
import System.Random
import Control.Monad
randomABC a b c = let
r = [ a, a+b .. c ]
in ( r !! ) <$> ( randomRIO ( 0, length r - 1 ) :: IO Int )
main = do
print =<< ( replicateM 20 $ randomABC 1 2 10 )
print =<< ( replicateM 20 $ randomABC 5 7 40 )
----
[1,1,9,7,9,7,7,9,7,5,7,7,7,3,7,1,5,9,5,7]
[33,26,26,26,12,19,40,40,12,33,19,26,19,26,26,33,19,5,5,33]
入力パースするとこは略して
Haskell
import System.Random
import Control.Monad
randomABC a b c = let
r = [ a, a+b .. c ]
in ( r !! ) <$> ( randomRIO ( 0, length r - 1 ) :: IO Int )
main = do
print =<< ( replicateM 20 $ randomABC 1 2 10 )
print =<< ( replicateM 20 $ randomABC 5 7 40 )
----
[1,1,9,7,9,7,7,9,7,5,7,7,7,3,7,1,5,9,5,7]
[33,26,26,26,12,19,40,40,12,33,19,26,19,26,26,33,19,5,5,33]
947デフォルトの名無しさん
2020/11/13(金) 20:43:02.05ID:3cTZftC0 >>940 bat
@echo off &setlocal
set /a n=8 &REM 出力個数
echo -3 9
for /L %%i in (1,1,%n%) do call :RAND_A2B -3 9
echo=&echo 3 -5
for /L %%i in (1,1,%n%) do call :RAND_A2B 3 -5
echo=&echo 4 4
for /L %%i in (1,1,%n%) do call :RAND_A2B 4 4
echo=&echo -5 2 2
for /L %%i in (1,1,%n%) do call :RAND_SiE -5 2 2
echo=&echo 2 -3 -12
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 -3 -12
echo=&echo 2 3 -4
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 3 -4
pause &exit /b
:: 1〜n間の偶数をrandom出力 => a〜b間の偶数をrandom出力
:RAND_A2B
setlocal
set /a "f=%1&1"
if %1 EQU %2 ( if %f% EQU 0 echo %1) &exit /b
if %1 LSS %2 set /a a=%1+1, b=%2
if %1 GTR %2 set /a a=%2+1, b=%1
set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1"
echo %r%&exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND_SiE
setlocal
if %2 NEQ 0 ( set /a "a=(%3-%1)/%2" ) else set /a a=0
if %a% LSS 0 set /a a=0
set /a "r=%random%%%(a+1)*%2+%1"
echo %r%&exit /b
@echo off &setlocal
set /a n=8 &REM 出力個数
echo -3 9
for /L %%i in (1,1,%n%) do call :RAND_A2B -3 9
echo=&echo 3 -5
for /L %%i in (1,1,%n%) do call :RAND_A2B 3 -5
echo=&echo 4 4
for /L %%i in (1,1,%n%) do call :RAND_A2B 4 4
echo=&echo -5 2 2
for /L %%i in (1,1,%n%) do call :RAND_SiE -5 2 2
echo=&echo 2 -3 -12
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 -3 -12
echo=&echo 2 3 -4
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 3 -4
pause &exit /b
:: 1〜n間の偶数をrandom出力 => a〜b間の偶数をrandom出力
:RAND_A2B
setlocal
set /a "f=%1&1"
if %1 EQU %2 ( if %f% EQU 0 echo %1) &exit /b
if %1 LSS %2 set /a a=%1+1, b=%2
if %1 GTR %2 set /a a=%2+1, b=%1
set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1"
echo %r%&exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND_SiE
setlocal
if %2 NEQ 0 ( set /a "a=(%3-%1)/%2" ) else set /a a=0
if %a% LSS 0 set /a a=0
set /a "r=%random%%%(a+1)*%2+%1"
echo %r%&exit /b
948デフォルトの名無しさん
2020/11/13(金) 22:58:48.40ID:ghr6tNw2 オンラインでbat動かせるサイトない?
>>947試して見たいんやけど
>>947試して見たいんやけど
949デフォルトの名無しさん
2020/11/13(金) 23:20:18.52ID:a1Z/nYk3 bat兄貴天才やな
950デフォルトの名無しさん
2020/11/14(土) 00:46:02.44ID:WHpB6hAc951デフォルトの名無しさん
2020/11/14(土) 06:23:08.91ID:rQXll7XK 過疎るのもわかるわ
952デフォルトの名無しさん
2020/11/15(日) 04:26:34.92ID:UMNa3GdF953デフォルトの名無しさん
2020/11/15(日) 18:33:50.31ID:UMNa3GdF お題
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください
入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください
入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
954デフォルトの名無しさん
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
gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size}
# => 0.3333333333333333
955デフォルトの名無しさん
2020/11/15(日) 18:41:22.95ID:UMNa3GdF はやいな
956デフォルトの名無しさん
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
let hits = 0
const input = '曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴'.split `,`
input.reduce((acc, v) => (hits += acc == v ? 1 : 0, v))
console.log(hits / (input.length - 1))
//=> 0.3333333333333333
957デフォルトの名無しさん
2020/11/15(日) 20:22:58.52ID:KOddDUPF >>956
.split(`,`) では
.split(`,`) では
958デフォルトの名無しさん
2020/11/15(日) 20:23:55.05ID:KOddDUPF すまん。バッククウォートだった。
959デフォルトの名無しさん
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
@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
960デフォルトの名無しさん
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
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
961デフォルトの名無しさん
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
@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
962デフォルトの名無しさん
2020/11/20(金) 19:52:50.75ID:HawO8Ftl963とくめい
2020/11/24(火) 01:34:45.23ID:SQQDs1Pp kakeruyamasato@gmail.comこのメアドを悪用してみせて
964デフォルトの名無しさん
2020/11/24(火) 08:07:25.33ID:aaTbFie9 通報しますた
965デフォルトの名無しさん
2020/11/25(水) 01:49:24.25ID:O2Mln20T966デフォルトの名無しさん
2020/11/26(木) 19:02:45.00ID:ACzSTlzf967デフォルトの名無しさん
2020/11/27(金) 01:08:20.91ID:bIFui41M >>966
なんていう言語?
なんていう言語?
968デフォルトの名無しさん
2020/11/27(金) 02:57:17.73ID:ocMZsxYX >>967
rubyでしょ
rubyでしょ
969デフォルトの名無しさん
2020/11/27(金) 19:31:40.66ID:Pnsgs34G rubyだったか。
970デフォルトの名無しさん
2020/11/28(土) 00:37:28.60ID:PcPNtVOH %がわからないって怒られた
971デフォルトの名無しさん
2020/11/28(土) 07:20:49.13ID:mYohOVrw お題
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
972デフォルトの名無しさん
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
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday
973デフォルトの名無しさん
2020/11/28(土) 08:05:44.72ID:nEfgRBi9 意外と難しいな
974デフォルトの名無しさん
2020/11/28(土) 08:40:11.81ID:wyvnQiBB975デフォルトの名無しさん
2020/11/28(土) 09:00:26.43ID:2Muxtrov >>966
問題の解釈違わねえ?
問題の解釈違わねえ?
976デフォルトの名無しさん
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"))
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"))
977デフォルトの名無しさん
2020/11/28(土) 11:36:22.72ID:FGpMIdZG978デフォルトの名無しさん
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]
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]
979デフォルトの名無しさん
2020/11/28(土) 12:38:57.57ID:L52xXSLK 予想通りの流れになってくれて何より
980977
2020/11/28(土) 14:12:40.28ID:FGpMIdZG ruby -e 'p ( ( 1..5 ) % 2 ).to_a'
#=> [1, 3, 5]
2 は、各ステップの大きさ
#=> [1, 3, 5]
2 は、各ステップの大きさ
981デフォルトの名無しさん
2020/11/28(土) 16:09:49.88ID:myGQAvEM ダメだ
オンラインでRuby 2.6使えるとこ見つからない
どっかない?
オンラインでRuby 2.6使えるとこ見つからない
どっかない?
982デフォルトの名無しさん
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
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
983デフォルトの名無しさん
2020/11/28(土) 16:39:08.00ID:nEfgRBi9 jdoodle初めて知った
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
984デフォルトの名無しさん
2020/11/28(土) 17:26:12.48ID:FGpMIdZG paiza は、いつも新しい
codepad は、古いような気がする
codepad は、古いような気がする
985デフォルトの名無しさん
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 もある
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 もある
986デフォルトの名無しさん
2020/11/28(土) 17:57:16.56ID:myGQAvEM987デフォルトの名無しさん
2020/11/28(土) 18:01:21.11ID:myGQAvEM とりあえず自分で打ち込んで試した
shuffleはランダムに並べ替えみたいだからちょっと違うかな
shuffleはランダムに並べ替えみたいだからちょっと違うかな
988デフォルトの名無しさん
2020/11/28(土) 22:44:23.07ID:wyvnQiBB >>987
shuffleの代わりにsampleを使うといい
shuffleの代わりにsampleを使うといい
989デフォルトの名無しさん
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
:: 年月日を元に曜日を返す。 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
990デフォルトの名無しさん
2020/11/29(日) 12:05:03.89ID:POmPIOqu991デフォルトの名無しさん
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が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。
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が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。
992253
2020/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
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
993253
2020/11/29(日) 17:21:11.49ID:onV9IrOo994デフォルトの名無しさん
2020/11/29(日) 20:08:13.17ID:idUZlJAo995デフォルトの名無しさん
2020/11/29(日) 20:39:34.37ID:idUZlJAo お題
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください
例
入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください
例
入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]
997デフォルトの名無しさん
2020/11/29(日) 21:15:00.96ID:sOEBQUsx 値が連続しないサブ配列とは?
999デフォルトの名無しさん
2020/11/29(日) 21:26:09.30ID:sOEBQUsx [4, −1, 2, 1]は値が連続するサブ配列で
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?
1000デフォルトの名無しさん
2020/11/29(日) 21:34:10.34ID:idUZlJAo >>999
教えません
教えません
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 立民・岡田氏の質疑「不適切」 維新・藤田氏、台湾有事答弁巡り [蚤の市★]
- 【悲報】日本、自民党(統一教会)で完全崩壊か?年金制度実質破綻、生活保護、国民健康保険廃止へ [383063292]
- ㊗157円 [194819832]
- なんでIDがHAPPYなの?
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 高市早苗って「わざと」日本畳んでるよな? [419865925]
- ‎
