[過去ログ] プログラミングのお題スレ Part18 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(9): 2020/07/14(火)13:53 ID:jW5p6F/e(1) AAS
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
外部リンク:ideone.com
外部リンク:codepad.org
外部リンク:compileonline.com
外部リンク:rextester.com
外部リンク:runnable.com
外部リンク:code.hackerearth.com
外部リンク:melpon.org
外部リンク:paiza.io

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

※前スレ
プログラミングのお題スレ Part17
2chスレ:tech
876: 2020/11/02(月)12:23 ID:UfGVYnOo(1/2) AAS
まじでセンスないな
877: 2020/11/02(月)12:36 ID:zo3ZJgwO(1) AAS
パラボラアンテナの半径ってどこのことだよ
878: 2020/11/02(月)13:43 ID:gftnEWfN(1) AAS
common lisp
外部リンク:ideone.com
うーん微妙
879: 2020/11/02(月)14:26 ID:vIueiXdU(1) AAS
>>825 .bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" echo none&exit /b
set "STR=%~1"
set TRICK=trick
set TREAT=treat
set /a n=0, k=0, t=0
:WHILE
if /i "!STR:~%n%,1!"=="!TRICK:~%k%,1!" if %k% LSS 4 ( set /a k+=1 ) else echo trick&exit /b
if /i "!STR:~%n%,1!"=="!TREAT:~%t%,1!" if %t% LSS 4 ( set /a t+=1 ) else echo treat&exit /b
set /a n+=1
if not "!STR:~%n%,1!"=="" goto :WHILE
echo none&exit /b
880: 2020/11/02(月)18:10 ID:Ac4tp6ZL(1) AAS
>>825
Haskell
外部リンク:ideone.com

iimport Text.ParserCombinators.Parsec

makeP = mconcat . map ( manyTill anyChar . char )

lastInd x s = case ( runParser ( makeP x ) () "" s ) of
Left _ -> ( [ 2, 0 ] , x )
Right y -> ( [ 0, length $ x ++ y ], x )

trickOrTreat x = snd $ minimum [
lastInd "trick" x,
lastInd "treat" x,
( [1,0], "Happy Halloween" ) ]

main = mapM_ ( print . trickOrTreat ) [
"trick or treat",
". tr ick",
"ttrriecatk",
"tri kc eat",
"my money" ]
881: 2020/11/02(月)19:01 ID:hORytTpS(1) AAS
>>825
#include <stdio.h>
#include <string.h>

static void
tot (char *p)
{
int i = 0, j = 0;
if ((p = strchr (p, 't')) && (p = strchr (p + 1, 'r')))
while (*++p && !(*p == "ick"[i] && ++i == 3) && !(*p == "eat"[j] && ++j == 3)) ;
printf ("%s\n", (i == 3) ? "trick" : ((j == 3) ? "treat" : "none"));
}

int
main ()
{
tot ("trick or treat");
tot (". tr ick");
tot ("ttrriecatk");
tot ("tri kc eat");
tot ("my money");
}
882
(9): 2020/11/02(月)19:55 ID:0Q72CsT7(1) AAS
お題
アスペクト比X:Y、L[inch]のディスプレイの
幅Wと高さHをcm単位でそれぞれ求めよ

[入力]
X Y L

[出力]
W H ※cm単位で小数第1位まで出力

[例]
16 9 40
=> 88.6 49.8

64 27 29
=> 67.9 28.6

3 4 10.2
=> 15.5 20.7
883: 869 2020/11/02(月)20:41 ID:PEXljxha(1/3) AAS
>>825 octave
外部リンク:ideone.com
・残り文字数数える関数fがガバガバだったので修正
884: 2020/11/02(月)20:50 ID:LqVECFSh(1) AAS
>>882
Java
外部リンク:paiza.io
885: 2020/11/02(月)20:55 ID:UfGVYnOo(2/2) AAS
>>882
実用的じゃん
886: 2020/11/02(月)21:39 ID:PEXljxha(2/3) AAS
>>882 octave
外部リンク:ideone.com
887: 2020/11/02(月)22:00 ID:PEXljxha(3/3) AAS
>>882 octave
外部リンク:ideone.com
・若干の変更
888: 2020/11/02(月)22:02 ID:i1cL0pVh(1) AAS
>>875
消えろ
889: 2020/11/02(月)22:12 ID:2/AbCXtL(2/2) AAS
>>882
Perl
外部リンク:paiza.io
890: 2020/11/02(月)23:19 ID:ZpVsHyOp(1) AAS
>>882 JavaScript
const f=(x, y, l) => [x, y].map(i => (i * 2.54 * l / Math.sqrt(x ** 2 + y ** 2)).toFixed(1))
console.log(...f(16, 9, 40))
console.log(...f(64, 27, 29))
console.log(...f(3, 4, 10.2))
891
(1): 2020/11/03(火)00:18 ID:1BjkDVvF(1) AAS
>>882

Hadkell

cmpin =2.54
r10 = (/10).fromInteger.round.(*10)
toWH (x, y, sz) = let
arg = atan2 y x
diag = sz * cmpin
in ( r10 $ (cos arg) * diag , r10 $ (sin arg) * diag )

main = mapM_ ( print . toWH) [
(16, 9, 40),
(64,27,29),
(3,4, 10.2) ]
892
(7): 2020/11/03(火)01:33 ID:psuX0FGw(1/4) AAS
お題
{1,2,3,4,5,6,7,8}
を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙
例えば
{1,6}+{2,8}+{3,4,5,7}

{2,8}+{1,6}+{3,4,5,7}
は同じやり方になるので二重カウントしないこと
893
(1): 2020/11/03(火)02:32 ID:yN+x511c(1) AAS
>>892
[1..8]は流石にtoo large
haskell

import Data.List

parts [] = [ [ ] ]
parts [x] = [ [ [x] ] ]
parts ( x : xs ) = [ (x : ys) : zs |
ys <- subsequences xs,
zs <- parts $ xs \\ ys ]

main = do
print $ parts [2,3]
print $ parts [1,2,3]
print $ length $ parts [1..8]
----
[[[2],[3]],[[2,3]]]
[[[1],[2],[3]],[[1],[2,3]],[[1,2],[3]],[[1,3],[2]],[[1,2,3]]]
4140
894: 2020/11/03(火)08:10 ID:WKYb8LN0(1) AAS
>>893
きれいだな
895: 2020/11/03(火)09:07 ID:psuX0FGw(2/4) AAS
A:={1,2,3,4,5,6,7,8};
A_1:={A};
A_2:={ {a,b} \subset 2^A | a+b=A,~a+~b=A };
A_3:={ {a,b,c} \subset 2^A | a+b+c=A,~a+~b+~c=A };
A_4:={ {a,b,c,d} \subset 2^A | a+b+c+d=A,~a+~b+~c+~d=A };
A_5:={ {a,b,c,d,e} \subset 2^A | a+b+c+d+e=A,~a+~b+~c+~d+~e=A };
A_6:={ {a,b,c,d,e,f} \subset 2^A | a+b+c+d+e+f=A,~a+~b+~c+~d+~e+~f=A };
A_7:={ {a,b,c,d,e,f,g} \subset 2^A | a+b+c+d+e+f+g=A,~a+~b+~c+~d+~e+~f+~g=A };
A_8:={ {a,b,c,d,e,f,g,h} \subset 2^A| a+b+c+d+e+f+g+h=A,~a+~b+~c+~d+~e+~f+~g+~h=A};
B:=A_1+A_2+A_3+A_4+A_5+A_6+A_7+A_8;
count[expand B];

1:{{1},{2},{3},{4},{5},{6},{7},{8}}
2:{{1},{2},{3},{4},{5},{6},{7,8}}
3:{{1},{2},{3},{4},{5},{7},{6,8}}
4:{{1},{2},{3},{4},{5},{8},{6,7}}
5:{{1},{2},{3},{4},{5},{6,7,8}}
6:{{1},{2},{3},{4},{6},{7},{5,8}}
7:{{1},{2},{3},{4},{6},{8},{5,7}}
8:{{1},{2},{3},{4},{6},{5,7,8}}
9:{{1},{2},{3},{4},{5,6},{7,8}}
10:{{1},{2},{3},{4},{7},{8},{5,6}}
11:{{1},{2},{3},{4},{7},{5,6,8}}
12:{{1},{2},{3},{4},{5,7},{6,8}}
...中略....
4135:{{2,7,8},{1,3,4,5,6}}
4136:{{3,7,8},{1,2,4,5,6}}
4137:{{4,7,8},{1,2,3,5,6}}
4138:{{5,7,8},{1,2,3,4,6}}
4139:{{6,7,8},{1,2,3,4,5}}
4140:{{1,2,3,4,5,6,7,8}}
896: 2020/11/03(火)09:10 ID:psuX0FGw(3/4) AAS
美しさだけなら某集合論用処理系に勝る
ものはないと思うが....
>>891の短時間回答能力とHaskelの潜在能力は
驚嘆すべきかも
897: 2020/11/03(火)09:15 ID:psuX0FGw(4/4) AAS
間違ってたときのコード貼ってしまったw
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。
898: 2020/11/03(火)21:04 ID:eC8ouzxK(1) AAS
>>882 bat
:: 引数は整数限定。結果は少数第2位を四捨五入。0〜0.04の時のみ少数第2位まで表示
:: 少し大き目の値を与えるとoverflow
@echo off &setlocal enabledelayedexpansion
set /a "x=%1*100, y=%2*100, z=0, d=%3*254, s=x*x+y*y, a=s>>1"
:WHILE
if %a% NEQ %z% set /a "z=a, a=(a+s/a)>>1" &goto :WHILE
set /a w=x*d/a, h=y*d/a
for %%G in (w h) do (
if !%%G:~-1! GEQ 5 set /a %%G+=10
if !%%G! GEQ 100 ( set %%G=!%%G:~0,-2!.!%%G:~-2,1!
) else if !%%G! GEQ 10 ( set %%G=0.!%%G:~-2,1!
) else if !%%G! GEQ 1 ( set %%G=0.0!%%G!
) else if !%%G! EQU 0 ( set %%G=0.00
) else echo ERROR: %%G=!%%G!
)
echo=%w% %h%
899: 2020/11/04(水)00:20 ID:rxWDSDf0(1) AAS
>>882 Lua
function f(x, y, l)
local a =2.54 * l / (x * x + y * y)^0.5
return x * a , y * a
end
print(string.format("%.1f , %.1f", f(16, 9, 40)))
実行結果
88.6 , 49.8
900: 2020/11/04(水)00:20 ID:kNuSoIVx(1) AAS
windows知らんけど
バッチ・ファイルすげぇなww
901: 2020/11/04(水)20:24 ID:uO47xEs9(1) AAS
>>892 Ruby
外部リンク:ideone.com
902: 2020/11/05(木)03:19 ID:EuRO0zRP(1) AAS
>>892
C++
外部リンク:ideone.com
903
(5): 2020/11/05(木)20:02 ID:pDv0veJc(1) AAS
AA省
904: 2020/11/05(木)20:47 ID:uObXfCng(1/2) AAS
デカくなっててワロタ
良さげなお題
905
(1): 2020/11/05(木)23:31 ID:5bWXoO+B(1) AAS
AA省
906: 2020/11/05(木)23:39 ID:W9kenpkY(1) AAS
>>905
すげぇな
今はCSSでこんなことまでできるのか
907
(1): 2020/11/05(木)23:40 ID:uObXfCng(2/2) AAS
:scale(2)もしとけ
908: 2020/11/06(金)01:21 ID:DUBJiW5Z(1/2) AAS
>>903
haskell
外部リンク:ideone.com
909: 2020/11/06(金)03:01 ID:2mWV4tVe(1) AAS
>>892
Java
外部リンク:paiza.io
910: 253 2020/11/06(金)13:23 ID:1EHNC/LO(1) AAS
AA省
911: 2020/11/06(金)13:24 ID:DUBJiW5Z(2/2) AAS
>>903
haskell
素直に内包表記使ったVer.
外部リンク:ideone.com
912: 2020/11/07(土)15:16 ID:dGj5mxP2(1) AAS
sed 's/□/◇/g'

あ、いや、なんでもないです。忘れてください。
913
(1): 2020/11/07(土)15:50 ID:0+q2MsjY(1) AAS
>>903 bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" set "this=%~0" &"%~0" "□"
set /a n=0, Hmax=0
:GET_ARG
set "arg%n%=%~1"
set "arg%n%=!arg%n%:_=0 !"
set "arg%n%=!arg%n%:□=1 !"
shift
if not "%~1"=="" set /a n+=1 &goto :GET_ARG
for /L %%i in (0,1,%n%) do ( set h=0
for %%b in (!arg%%i!) do set /a a[%%i;!h!]=%%b, h+=1
if !h! GTR !Hmax! set /a Hmax=h
)
set /a t=n+Hmax, Hmax-=1
for /L %%a in (0,1,%t%) do for /L %%b in (0,1,%t%) do set R[%%a;%%b]=0
for /L %%a in (0,1,%n%) do for /L %%b in (0,1,%Hmax%) do (
set /a A=%%a+%%b, B=a+1, C=n+%%b-%%a, D=c+1
set /a "R[!A!;!C!]|=a[%%a;%%b], R[!A!;!D!]|=a[%%a;%%b], R[!B!;!C!]|=a[%%a;%%b], R[!B!;!D!]|=a[%%a;%%b]"
REM orをxorに替えればアウトライン表示
)
:: for /L %%A in (0,1,%t%) do (for /L %%B in (0,1,%t%) do set "P%%A=!P%%A!!R[%%A;%%B]!") &echo !P%%A!
for /L %%A in (0,1,%t%) do (
for /L %%B in (0,1,%t%) do (
set /a "M=%%A+%%B, M%%=2"
if "!R[%%A;%%B]!"=="0" (set "S%%A=!S%%A! ") else if "!M!"=="0" (set "S%%A=!S%%A!/") else set "S%%A=!S%%A!\"
)
echo=!S%%A!
)
endlocal
if not "%~0"=="_□□□" "%this%" "___□" "□□_□" "_□□□"
省1
914: 2020/11/07(土)19:47 ID:/E6xY+R5(1) AAS
バッチでやるとかいい根性してる
915: 2020/11/07(土)21:06 ID:anINQjB0(1) AAS
>>903 Common Lisp
外部リンク:ideone.com
916: 2020/11/07(土)22:21 ID:alCltY04(1) AAS
>>907
scale(1.41421356)でしょ
917
(1): 2020/11/07(土)23:04 ID:zLEnd997(1) AAS
>>892
ビット操作で直接作れた
外部リンク:paiza.io
918: 2020/11/08(日)00:05 ID:DLA7KrcO(1) AAS
>>913
バッチファイル兄貴いいぞ
もっとやれ
919
(3): 2020/11/08(日)00:15 ID:ct8WHwWl(1/2) AAS
バッチよくやってるな
batにトランスパイルできるもっといい感じの構文の言語とかないの
920
(1): 2020/11/08(日)02:24 ID:vLTv8mzL(1) AAS
バッチで>>892やる猛者はいないのか?
QZならできそうだがだんまりか?
921: 2020/11/08(日)02:34 ID:HKu5GaPi(1) AAS
>>917
このコードZen2までのAMDのCPUだと多分とんでもなく遅くなる
ここで使ってるpdep命令がintelのやZen3と比べて100倍以上遅いから
922: ◆QZaw55cn4c 2020/11/08(日)03:02 ID:H3a4zXqH(1) AAS
>>920
私は C しか書けません
923
(2): 2020/11/08(日)03:56 ID:YnyAcD/m(1/5) AAS
>>919
こんなのならあった
外部リンク:github.com

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 ID:YnyAcD/m(2/5) AAS
>>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

他、クラスフィールドやマジックメソッドなど
925
(1): 2020/11/08(日)04:20 ID:YnyAcD/m(3/5) AAS
>>919
もうひとつ。
外部リンク:github.com

>>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
(2): 2020/11/08(日)05:03 ID:YnyAcD/m(4/5) AAS
>>919
シェルスクリプトからの変換系:
外部リンク:github.com
外部リンク:github.com

あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
外部リンク:github.com
タイプ的には >>925 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( 外部リンク:batsh.org )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。
927: 2020/11/08(日)05:16 ID:YnyAcD/m(5/5) AAS
>>926
moongiftに紹介記事があった。
外部リンク:www.moongift.jpのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…
928: 2020/11/08(日)08:18 ID:ct8WHwWl(2/2) AAS
>>926
これきれいだな
929
(2): 2020/11/09(月)23:19 ID:biYC5NlX(1) AAS
もうすぐポッキーの日
[お題] 人口合計でオール1

URLのページに都道府県別の人口が載っている。
 今回使用するのは、2019/10のデータ
 外部リンク:ideone.com

 同じ県は一回のみで、異なる県を何県でも選んでよい。
 (つまり選び方は全部で 2^47 種類)
 人口合計が"1"のみの数字となる選び方は何種類あるか?
 (実質、1111万1111人, 1億1111万1111人になる選び方)

※一発正解問題、実行時間3秒程度。
 同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。
930: 2020/11/09(月)23:52 ID:XExSNiE1(1) AAS
11111111 は43?
111111111はオンラインコンパイラでタイムアウトorz
931: 2020/11/10(火)00:38 ID:duQVrAg3(1) AAS
面白そうなお題
932: 2020/11/10(火)00:38 ID:qJS2/p90(1/2) AAS
111111111 は650かな?
933
(1): 2020/11/10(火)00:45 ID:qJS2/p90(2/2) AAS
とりあえず
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 ID:903MPdZb(1) AAS
batコーイ!!
935: 2020/11/10(火)02:49 ID:VuEsWlWs(1) AAS
>>929
外部リンク:ideone.com
力任せなコードだけどどうにか時間内に終わった
936: 2020/11/10(火)13:44 ID:3xGJBleZ(1) AAS
典型的なdp問題じゃねえの
937: 929 2020/11/10(火)17:29 ID:q5cN/btj(1) AAS
>>929

・想定解はDPの数え上げ
 さすがに1.1億×47は苦しいので、
 1.1億に関しては、(全人口 - 1.1億)で計算する。
 そうすれば、1600万×47の計算量で済む。
 
 外部リンク:ideone.com
  下にpython(numpy)で想定解追加
938: 253 2020/11/11(水)00:47 ID:vox+S3u3(1) AAS
(´・ω・`)
939: 2020/11/11(水)18:19 ID:NMl7/e2v(1) AAS
暇つぶしに>>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%ほどになるのか
勉強になった
940
(6): 2020/11/12(木)15:39 ID:VX9X1ew1(1/3) AAS
お題1
1〜nまでの偶数をランダムに出力してください

お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください


入力: 1 2 10
出力:
1
1
3
9
1
7
5
941: 2020/11/12(木)15:58 ID:uK53dAw4(1) AAS
>>940 を読んで、やっぱり日本語は非論理的な言語だな、と思った。
942: 2020/11/12(木)16:04 ID:VX9X1ew1(2/3) AAS
書き手の問題だと思うよ
943: 2020/11/12(木)18:42 ID:HU5jtk1k(1/2) AAS
オレは深まりゆく秋を感じた
944: 2020/11/12(木)19:26 ID:VX9X1ew1(3/3) AAS
ふーけゆくー秋の夜ー
945: 2020/11/12(木)19:34 ID:nzp5rNOe(1) AAS
>>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
946: 2020/11/12(木)23:53 ID:HU5jtk1k(2/2) AAS
そゆいみか
入力パースするとこは略して

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
(2): 2020/11/13(金)20:43 ID:3cTZftC0(1) AAS
>>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"
省1
948
(1): 2020/11/13(金)22:58 ID:ghr6tNw2(1) AAS
オンラインでbat動かせるサイトない?
>>947試して見たいんやけど
949: 2020/11/13(金)23:20 ID:a1Z/nYk3(1) AAS
bat兄貴天才やな
950: 2020/11/14(土)00:46 ID:WHpB6hAc(1) AAS
>>948
それをお題にするのはありかも
947を読んで同じ動きをするプログラムを書け、とかね
951: 2020/11/14(土)06:23 ID:rQXll7XK(1) AAS
過疎るのもわかるわ
952: 2020/11/15(日)04:26 ID:UMNa3GdF(1/3) AAS
>>940
Java
外部リンク:paiza.io
953
(4): 2020/11/15(日)18:33 ID:UMNa3GdF(2/3) AAS
お題
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください

入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
954
(1): 2020/11/15(日)18:40 ID:KOddDUPF(1/3) AAS
>>953 Ruby

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 ID:UMNa3GdF(3/3) AAS
はやいな
956
(1): 2020/11/15(日)20:20 ID:8j4ATkh0(1) AAS
>>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
957: 2020/11/15(日)20:22 ID:KOddDUPF(2/3) AAS
>>956
.split(`,`) では
958: 2020/11/15(日)20:23 ID:KOddDUPF(3/3) AAS
すまん。バッククウォートだった。
959: 2020/11/16(月)00:51 ID:lyH8UsEw(1/2) AAS
>>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
960: 2020/11/16(月)03:31 ID:apQPm4KR(1) AAS
>>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
961: 2020/11/16(月)03:32 ID:lyH8UsEw(2/2) AAS
>>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
962: 2020/11/20(金)19:52 ID:HawO8Ftl(1) AAS
>>940
Kotlin
外部リンク:paiza.io
963: とくめい [kakeruyamasato@gmail.com] 2020/11/24(火)01:34 ID:SQQDs1Pp(1) AAS
kakeruyamasato@gmail.comこのメアドを悪用してみせて
964: 2020/11/24(火)08:07 ID:aaTbFie9(1) AAS
通報しますた
965: 2020/11/25(水)01:49 ID:O2Mln20T(1) AAS
>>953
Kotlin
外部リンク:paiza.io
966
(2): 2020/11/26(木)19:02 ID:ACzSTlzf(1) AAS
>>940
a,b,c = [1,2,10]
puts ((a..c) % b).to_a.shuffle
967
(1): 2020/11/27(金)01:08 ID:bIFui41M(1) AAS
>>966
なんていう言語?
968: 2020/11/27(金)02:57 ID:ocMZsxYX(1) AAS
>>967
rubyでしょ
969: 2020/11/27(金)19:31 ID:Pnsgs34G(1) AAS
rubyだったか。
970
(1): 2020/11/28(土)00:37 ID:PcPNtVOH(1) AAS
%がわからないって怒られた
971
(9): 2020/11/28(土)07:20 ID:mYohOVrw(1) AAS
お題
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
972: 2020/11/28(土)07:34 ID:CtkueG9H(1) AAS
>>971 bat
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday
973: 2020/11/28(土)08:05 ID:nEfgRBi9(1/3) AAS
意外と難しいな
974: 2020/11/28(土)08:40 ID:wyvnQiBB(1/2) AAS
>>971 Ruby

puts Date::DAYNAMES.rotate

# => Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
975: 2020/11/28(土)09:00 ID:2Muxtrov(1) AAS
>>966
問題の解釈違わねえ?
976: 2020/11/28(土)09:12 ID:nEfgRBi9(2/3) AAS
>>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"))
977
(2): 2020/11/28(土)11:36 ID:FGpMIdZG(1/4) AAS
>>970
( 1..10 ) % 2

range に、% というメソッドは無い!
978: 2020/11/28(土)12:27 ID:GOv1h+p2(1) AAS
>>977
NEWS for Ruby 2.6.0
2.5.0 以降の変更
外部リンク[html]:docs.ruby-lang.org
> Range
> 新規メソッド
> Range#% が追加されました。 [feature#14697]
979: 2020/11/28(土)12:38 ID:L52xXSLK(1) AAS
予想通りの流れになってくれて何より
980: 977 2020/11/28(土)14:12 ID:FGpMIdZG(2/4) AAS
ruby -e 'p ( ( 1..5 ) % 2 ).to_a'
#=> [1, 3, 5]

2 は、各ステップの大きさ
981
(1): 2020/11/28(土)16:09 ID:myGQAvEM(1/3) AAS
ダメだ
オンラインでRuby 2.6使えるとこ見つからない
どっかない?
982
(1): 2020/11/28(土)16:34 ID:gB71rnHS(1) AAS
>>981
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
外部リンク:www.jdoodle.com

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
外部リンク:techiedelight.com

ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
外部リンク:paiza.io
983: 2020/11/28(土)16:39 ID:nEfgRBi9(3/3) AAS
jdoodle初めて知った
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
984: 2020/11/28(土)17:26 ID:FGpMIdZG(3/4) AAS
paiza は、いつも新しい

codepad は、古いような気がする
985: 2020/11/28(土)17:30 ID:FGpMIdZG(4/4) AAS
漏れは、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 もある
986: 2020/11/28(土)17:57 ID:myGQAvEM(2/3) AAS
>>982
thx
でもiphoneでどのサイトもコピペができないorz
なんでなんだろう?
987
(1): 2020/11/28(土)18:01 ID:myGQAvEM(3/3) AAS
とりあえず自分で打ち込んで試した
shuffleはランダムに並べ替えみたいだからちょっと違うかな
988: 2020/11/28(土)22:44 ID:wyvnQiBB(2/2) AAS
>>987
shuffleの代わりにsampleを使うといい
989: 2020/11/29(日)06:10 ID:LsAPFm47(1) AAS
>>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
990: 2020/11/29(日)12:05 ID:POmPIOqu(1) AAS
>>971 Julia
using Dates
for w=1:7
println(Dates.format(Date(1,1,w), "E"))
end
991: 2020/11/29(日)14:25 ID:KxupmnON(1) AAS
>>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が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。
992
(1): 253 2020/11/29(日)15:02 ID:onV9IrOo(1/2) AAS
>>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
993: 253 2020/11/29(日)17:21 ID:onV9IrOo(2/2) AAS
>>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
994: 2020/11/29(日)20:08 ID:idUZlJAo(1/4) AAS
>>971
Java
外部リンク:paiza.io
995
(1): 2020/11/29(日)20:39 ID:idUZlJAo(2/4) AAS
お題
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください


入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]
996
(1): ◆QZaw55cn4c 2020/11/29(日)21:07 ID:POdKASdd(1) AAS
>>995
>サブ配列
の定義を教えてください
997
(1): 2020/11/29(日)21:15 ID:sOEBQUsx(1/2) AAS
値が連続しないサブ配列とは?
998: 2020/11/29(日)21:21 ID:idUZlJAo(3/4) AAS
>>996
教えません

>>997
[1, 4, 2, 1, 4]
とか
999
(1): 2020/11/29(日)21:26 ID:sOEBQUsx(2/2) AAS
[4, −1, 2, 1]は値が連続するサブ配列で
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?
1000: 2020/11/29(日)21:34 ID:idUZlJAo(4/4) AAS
>>999
教えません
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

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

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

▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net

▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.214s*