1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.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/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part17 https://mevius.5ch.net/test/read.cgi/tech/1584031367/
902 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:36:09.22 ID:zo3ZJgwO.net] パラボラアンテナの半径ってどこのことだよ
903 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 13:43:55.18 ID:gftnEWfN.net] common lisp https://ideone.com/GZ8Wbt うーん微妙
904 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 14:26:45.62 ID:vIueiXdU.net] >>835 .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
905 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:10:30.68 ID:Ac4tp6ZL.net] >>835 Haskell https://ideone.com/wg9JbO 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" ]
906 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:01:54.49 ID:hORytTpS.net] >>835 #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"); }
907 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:55:30.38 ID:0Q72CsT7.net] お題 アスペクト比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
908 名前:869 mailto:sage [2020/11/02(月) 20:41:57.79 ID:PEXljxha.net] >>835 octave https://ideone.com/TknUHT ・残り文字数数える関数fがガバガバだったので修正
909 名前:デフォルトの名無しさん [2020/11/02(月) 20:50:30.27 ID:LqVECFSh.net] >>892 Java https://paiza.io/projects/k8RErATdGPNrkP2gRrOmSw
910 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 20:55:38.75 ID:UfGVYnOo.net] >>892 実用的じゃん
911 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 21:39:44.31 ID:PEXljxha.net] >>892 octave https://ideone.com/un3EHy
912 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:00:22.68 ID:PEXljxha.net] >>892 octave https://ideone.com/kETWpz ・若干の変更
913 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:02:25.78 ID:i1cL0pVh.net] >>885 消えろ
914 名前:デフォルトの名無しさん [2020/11/02(月) 22:12:37.48 ID:2/AbCXtL.net] >>892 Perl https://paiza.io/projects/3i_gH0-CGf93OpsUWJzFVg
915 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 23:19:41.46 ID:ZpVsHyOp.net] >>892 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))
916 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 00:18:12.81 ID:1BjkDVvF.net] >>892 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) ]
917 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 01:33:31.56 ID:psuX0FGw.net] お題 {1,2,3,4,5,6,7,8} を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙 例えば {1,6}+{2,8}+{3,4,5,7} と {2,8}+{1,6}+{3,4,5,7} は同じやり方になるので二重カウントしないこと
918 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 02:32:26.13 ID:yN+x511c.net] >>902 [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
919 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 08:10:12.54 ID:WKYb8LN0.net] >>903 きれいだな
920 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:07:39.02 ID:psuX0FGw.net] 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}}
921 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:10:16.73 ID:psuX0FGw.net] 美しさだけなら某集合論用処理系に勝る ものはないと思うが.... >>901 の短時間回答能力とHaskelの潜在能力は 驚嘆すべきかも
922 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:15:47.91 ID:psuX0FGw.net] 間違ってたときのコード貼ってしまったw ~a+~b=A とかは要らなかったw a+b=A とかだけでよかった a \cup bが普通の和集合ね。
923 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 21:04:35.96 ID:eC8ouzxK.net] >>892 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%
924 名前:デフォルトの名無しさん [2020/11/04(水) 00:20:20.72 ID:rxWDSDf0.net] >>892 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
925 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 00:20:22.20 ID:kNuSoIVx.net] windows知らんけど バッチ・ファイルすげぇなww
926 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 18:59:14.79 ID:M+x6liG8u] 【アフィリエイト】ブログで「月100万円稼ぐ方法」を初心者向けにプロブロガーが解説 https://www.youtube.com/watch?v=tnp0oUbg2uc 【実例有り】ブログで月1万円稼ぐまでの具体的な道筋を教える【プロが解説】 https://www.youtube.com/watch?v=S-pk5AmW3g8 【案件も公開】ブログで月20万円稼ぐ方法の全て。具体的な道筋や戦略も全て公開【雑記でもいけた】 https://www.youtube.com/watch?v=Jiujwjhe300 ブログ収益が大きく伸びた、たった1つのきっかけを話す【ネタバレ:人と会う】 https://www.youtube.com/watch?v=r5cutrq6GO4 ブログで稼ぐ仕組み徹底解説】初心者にもやさしく、丁寧に説明 https://www.youtube.com/watch?v=n4qF7xpL7-M 【ミスるとヤバい】特化ブログと雑記ブログ、どっちがいいの?おすすめの運営方法も解説! https://www.youtube.com/watch?v=sh2v5Uqlo1M 【危険】ブログで稼げずに「挫折」してしまう人の特徴【初心者は特に注意】 https://www.youtube.com/watch?v=W86zHTngRLE
927 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 20:24:03.31 ID:uO47xEs9.net] >>902 Ruby https://ideone.com/uEqDoX
928 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 03:19:19.40 ID:EuRO0zRP.net] >>902 C++ https://ideone.com/YmUte9
929 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:02:28.58 ID:pDv0veJc.net] お題 '□'(正方形)と'_'(空白)で表される図形を45度回
930 名前:転して描画せよ。 [例1] □ /\ \/ [例2] ___□ □□_□ _□□□ /\ \/\ /\/ /\ \/\/\/ \/\/ \/ [] [ここ壊れてます]
931 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:47:59.87 ID:uObXfCng.net] デカくなっててワロタ 良さげなお題
932 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:31:16.69 ID:5bWXoO+B.net] >>914 html <textarea style="transform:rotate(45deg)"> ___□ □□_□ _□□□ </textarea>
933 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:39:12.30 ID:W9kenpkY.net] >>916 すげぇな 今はCSSでこんなことまでできるのか
934 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:40:00.35 ID:uObXfCng.net] :scale(2)もしとけ
935 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 01:21:28.35 ID:DUBJiW5Z.net] >>914 haskell https://ideone.com/VwHiJD
936 名前:デフォルトの名無しさん [2020/11/06(金) 03:01:56.79 ID:2mWV4tVe.net] >>902 Java https://paiza.io/projects/zGMV5xqRPjP1fxjo1Zu1Nw
937 名前:253 mailto:sage [2020/11/06(金) 13:23:23.40 ID:1EHNC/LO.net] >>902 Perl5 use feature qw{current_sub say}; use Data::Dump 'dump'; @a = sub{ my $l = pop; @_ ? ( map{ sub{ map{ sub{ sub{ push @{$_[$_]}, $l; [@_] }->(map{[@$_]} @_); }->(@_) } 0..@_ }->(@$_) } __SUB__->(@_) ) : [[$l]]; }->(1..8); say dump @a; say scalar @a; 実行結果 ~ $ perl 18_892.pl ( [[1 .. 8]], [[1 .. 7], [8]], … 中略 [[1], [2], [3], [4], [5], [6], [7, 8]], [[1], [2], [3], [4], [5], [6], [7], [8]], ) 4140
938 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 13:24:39.43 ID:DUBJiW5Z.net] >>914 haskell 素直に内包表記使ったVer. https://ideone.com/gA63Fi
939 名前:デフォルトの名無しさん [2020/11/07(土) 15:16:17.29 ID:dGj5mxP2.net] sed 's/□/◇/g' あ、いや、なんでもないです。忘れてください。
940 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 15:50:17.56 ID:0+q2MsjY.net] >>914 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%" "___□" "□□_□" "_□□□" pause &exit /b
941 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 19:47:28.12 ID:/E6xY+R5.net] バッチでやるとかいい根性してる
942 名前:デフォルトの名無しさん [2020/11/07(土) 21:06:37.63 ID:anINQjB0.net] >>914 Common Lisp https://ideone.com/CMyiD0
943 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:21:52.44 ID:alCltY04.net] >>918 scale(1.41421356)でしょ
944 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 23:04:28.88 ID:zLEnd997.net] >>902 ビット操作で直接作れた https://paiza.io/projects/JwD_YC7dX2RRZz8G9ydnaA
945 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:05:04.78 ID:DLA7KrcO.net] >>924 バッチファイル兄貴いいぞ もっとやれ
946 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:15:55.29 ID:ct8WHwWl.net] バッチよくやってるな batにトランスパイルできるもっといい感じの構文の言語とかないの
947 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:24:23.73 ID:vLTv8mzL.net] バッチで>>902 やる猛者はいないのか? QZならできそうだがだんまりか?
948 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:34:25.46 ID:HKu5GaPi.net] >>928 このコードZen2までのAMDのCPUだと多分とんでもなく遅くなる ここで使ってるpdep命令がintelのやZen3と比べて100倍以上遅いから
949 名前: mailto:sage [2020/11/08(日) 03:02:51.65 ID:H3a4zXqH.net] >>931 私は C しか書けません
950 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:56:26.07 ID:YnyAcD/m.net] >>930 こんなのならあった 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
951 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:57:27.82 ID:YnyAcD/m.net] >>934 の続き 再帰サポートのための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 他、クラスフィールドやマジックメソッドなど
952 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 04:20:05.05 ID:YnyAcD/m.net] >>930 もうひとつ。 https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script >>934 が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 } トランスパイル結果略
953 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:03:48.08 ID:YnyAcD/m.net] >>930 シェルスクリプトからの変換系: https://github.com/daniel-sc/bash-shell-to-bat-converter https://github.com/sagiegurari/shell2batch あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。 https://github.com/batsh-dev-team/Batsh タイプ的には >>936 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。 こっちは凄いねスター4,000超えてるわ。 なんでこれが最初に見つからんのや… プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。 文法はオーソドックスなC系ですね。
954 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:16:53.07 ID:YnyAcD/m.net] >>937 moongiftに紹介記事があった。 https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/ …そしてアドレスバー見たら既にお気に入りに登録されていた…
955 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 08:18:54.23 ID:ct8WHwWl.net] >>937 これきれいだな
956 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:19:00.95 ID:biYC5NlX.net] もうすぐポッキーの日 [お題] 人口合計でオール1 URLのページに都道府県別の人口が載っている。 今回使用するのは、2019/10のデータ https://ideone.com/R4PCiQ 同じ県は一回のみで、異なる県を何県でも選んでよい。 (つまり選び方は全部で 2^47 種類) 人口合計が"1"のみの数字となる選び方は何種類あるか? (実質、1111万1111人, 1億1111万1111人になる選び方) ※一発正解問題、実行時間3秒程度。 同ページの他の年月人口でも計算できる程度のクオリティでok ※ちなみに 2015/10データだと916(40+876)種類だった。
957 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:52:24.94 ID:XExSNiE1.net] 11111111 は43? 111111111はオンラインコンパイラでタイムアウトorz
958 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:20.57 ID:duQVrAg3.net] 面白そうなお題
959 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:46.30 ID:qJS2/p90.net] 111111111 は650かな?
960 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:45:23.62 ID:qJS2/p90.net] とりあえず 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
961 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:25:54.45 ID:903MPdZb.net] batコーイ!!
962 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:49:15.00 ID:VuEsWlWs.net] >>940 https://ideone.com/8nuT5d 力任せなコードだけどどうにか時間内に終わった
963 名前:デフォルトの名無しさん [2020/11/10(火) 13:44:24.83 ID:3xGJBleZ.net] 典型的なdp問題じゃねえの
964 名前:929 mailto:sage [2020/11/10(火) 17:29:30.75 ID:q5cN/btj.net] >>940 ・想定解はDPの数え上げ さすがに1.1億×47は苦しいので、 1.1億に関しては、(全人口 - 1.1億)で計算する。 そうすれば、1600万×47の計算量で済む。 https://ideone.com/R4PCiQ 下にpython(numpy)で想定解追加
965 名前:253 mailto:sage [2020/11/11(水) 00:47:47.87 ID:vox+S3u3.net] (´・ω・`)
966 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 18:19:57.16 ID:NMl7/e2v.net] 暇つぶしに>>944 がどれくらい再帰呼び出し読んでるか数えてもらった 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%ほどになるのか 勉強になった
967 名前:デフォルトの名無しさん [2020/11/12(木) 15:39:00.87 ID:VX9X1ew1.net] お題1 1〜nまでの偶数をランダムに出力してください お題2 [開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください 例 入力: 1 2 10 出力: 1 1 3 9 1 7 5
968 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 15:58:04.88 ID:uK53dAw4.net] >>951 を読んで、やっぱり日本語は非論理的な言語だな、と思った。
969 名前:デフォルトの名無しさん [2020/11/12(木) 16:04:34.29 ID:VX9X1ew1.net] 書き手の問題だと思うよ
970 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 18:42:17.55 ID:HU5jtk1k.net] オレは深まりゆく秋を感じた
971 名前:デフォルトの名無しさん [2020/11/12(木) 19:26:25.71 ID:VX9X1ew1.net] ふーけゆくー秋の夜ー
972 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 19:34:08.43 ID:nzp5rNOe.net] >>951 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
973 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 23:53:28.13 ID:HU5jtk1k.net] そゆいみか 入力パースするとこは略して 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]
974 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 20:43:02.05 ID:3cTZftC0.net] >>951 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 set
975 名前:local 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 [] [ここ壊れてます]
976 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 22:58:48.40 ID:ghr6tNw2.net] オンラインでbat動かせるサイトない? >>958 試して見たいんやけど
977 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 23:20:18.52 ID:a1Z/nYk3.net] bat兄貴天才やな
978 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 00:46:02.44 ID:WHpB6hAc.net] >>959 それをお題にするのはありかも 947を読んで同じ動きをするプログラムを書け、とかね
979 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 06:23:08.91 ID:rQXll7XK.net] 過疎るのもわかるわ
980 名前:デフォルトの名無しさん [2020/11/15(日) 04:26:34.92 ID:UMNa3GdF.net] >>951 Java https://paiza.io/projects/IUNanoZeum1nhkVUBUqXZA
981 名前:デフォルトの名無しさん [2020/11/15(日) 18:33:50.31 ID:UMNa3GdF.net] お題 天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください 入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴
982 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 18:40:06.62 ID:KOddDUPF.net] >>964 Ruby gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size} # => 0.3333333333333333
983 名前:デフォルトの名無しさん [2020/11/15(日) 18:41:22.95 ID:UMNa3GdF.net] はやいな
984 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:20:51.56 ID:8j4ATkh0.net] >>964 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
985 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:22:58.52 ID:KOddDUPF.net] >>967 .split(`,`) では
986 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:23:55.05 ID:KOddDUPF.net] すまん。バッククウォートだった。
987 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 00:51:51.08 ID:lyH8UsEw.net] >>958 @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
988 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:31:51.13 ID:apQPm4KR.net] >>965 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
989 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:32:04.47 ID:lyH8UsEw.net] >>964 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
990 名前:デフォルトの名無しさん [2020/11/20(金) 19:52:50.75 ID:HawO8Ftl.net] >>951 Kotlin https://paiza.io/projects/AeE4_7EmFluzVxuefBJmDw
991 名前:とくめい mailto:kakeruyamasato@gmail.com [2020/11/24(火) 01:34:45.23 ID:SQQDs1Pp.net] kakeruyamasato@gmail.comこのメアドを悪用してみせて
992 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 08:07:25.33 ID:aaTbFie9.net] 通報しますた
993 名前:デフォルトの名無しさん [2020/11/25(水) 01:49:24.25 ID:O2Mln20T.net] >>964 Kotlin https://paiza.io/projects/-bhKDI048mc0kOJzIFqOHA
994 名前:デフォルトの名無しさん mailto:sage [2020/11/26(木) 19:02:45.00 ID:ACzSTlzf.net] >>951 a,b,c = [1,2,10] puts ((a..c) % b).to_a.shuffle
995 名前:デフォルトの名無しさん [2020/11/27(金) 01:08:20.91 ID:bIFui41M.net] >>977 なんていう言語?
996 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 02:57:17.73 ID:ocMZsxYX.net] >>978 rubyでしょ
997 名前:デフォルトの名無しさん [2020/11/27(金) 19:31:40.66 ID:Pnsgs34G.net] rubyだったか。
998 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 00:37:28.60 ID:PcPNtVOH.net] %がわからないって怒られた
999 名前:デフォルトの名無しさん [2020/11/28(土) 07:20:49.13 ID:mYohOVrw.net] お題 以下を表示する Monday Tuesday Wednesday Thursday Friday Saturday Sunday
1000 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 07:34:45.42 ID:CtkueG9H.net] >>982 bat @echo.以下を表示する @echo.Monday @echo.Tuesday @echo.Wednesday @echo.Thursday @echo.Friday @echo.Saturday @echo.Sunday
1001 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:05:44.72 ID:nEfgRBi9.net] 意外と難しいな
1002 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:40:11.81 ID:wyvnQiBB.net] >>982 Ruby puts Date::DAYNAMES.rotate # => Monday Tuesday Wednesday Thursday Friday Saturday Sunday
1003 名前:デフォルトの名無しさん [2020/11/28(土) 09:00:26.43 ID:2Muxtrov.net] >>977 問題の解釈違わねえ?
1004 名前:デフォルトの名無しさん [2020/11/28(土) 09:12:26.58 ID:nEfgRBi9.net] >>982 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"))
1005 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 11:36:22.72 ID:FGpMIdZG.net] >>981 ( 1..10 ) % 2 range に、% というメソッドは無い!
1006 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:27:13.39 ID:GOv1h+p2.net] >>988 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]
1007 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:38:57.57 ID:L52xXSLK.net] 予想通りの流れになってくれて何より
1008 名前:977 mailto:sage [2020/11/28(土) 14:12:40.28 ID:FGpMIdZG.net] ruby -e 'p ( ( 1..5 ) % 2 ).to_a' #=> [1, 3, 5] 2 は、各ステップの大きさ
1009 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:09:49.88 ID:myGQAvEM.net] ダメだ オンラインでRuby 2.6使えるとこ見つからない どっかない?
1010 名前:デフォルトの名無しさん [2020/11/28(土) 16:34:18.46 ID:gB71rnHS.net] >>992 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
1011 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:39:08.00 ID:nEfgRBi9.net] jdoodle初めて知った 手元の汚い環境にもrepelにもpaizaにもなかったとき使おう
1012 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:26:12.48 ID:FGpMIdZG.net] paiza は、いつも新しい codepad は、古いような気がする
1013 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:30:47.77 ID:FGpMIdZG.net] 漏れは、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 もある
1014 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:57:16.56 ID:myGQAvEM.net] >>993 thx でもiphoneでどのサイトもコピペができないorz なんでなんだろう?
1015 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:01:21.11 ID:myGQAvEM.net] とりあえず自分で打ち込んで試した shuffleはランダムに並べ替えみたいだからちょっと違うかな
1016 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 22:44:23.07 ID:wyvnQiBB.net] >>998 shuffleの代わりにsampleを使うといい
1017 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 06:10:23.39 ID:LsAPFm47.net] >>982 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
1018 名前:デフォルトの名無しさん [2020/11/29(日) 12:05:03.89 ID:POmPIOqu.net] >>982 Julia using Dates for w=1:7 println(Dates.format(Date(1,1,w), "E")) end
1019 名前:デフォルトの名無しさん [2020/11/29(日) 14:25:29.24 ID:KxupmnON.net] >>982 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が土曜になってしまい、 それを並び替えてから出力する必要があって少し複雑になった。
1020 名前:253 mailto:sage [2020/11/29(日) 15:02:42.80 ID:onV9IrOo.net] >>982 Perl5 use Time::Piece; use Time::Seconds; $
1021 名前: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 [] [ここ壊れてます]
1022 名前:253 mailto:sage [2020/11/29(日) 17:21:11.49 ID:onV9IrOo.net] >>982 Perl5、>>1003 のもうチョイ手抜き版 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
1023 名前:デフォルトの名無しさん [2020/11/29(日) 20:08:13.17 ID:idUZlJAo.net] >>982 Java https://paiza.io/projects/F3UDtssyIBLD9KwEcaTfjA
1024 名前:デフォルトの名無しさん [2020/11/29(日) 20:39:34.37 ID:idUZlJAo.net] お題 配列を入力として受け取り 値が連続するサブ配列のうち、合計が最大のものを出力してください 例 入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4] 出力:[4, −1, 2, 1]
1025 名前: mailto:sage [2020/11/29(日) 21:07:17.97 ID:POdKASdd.net] >>1006 >サブ配列 の定義を教えてください
1026 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:15:00.96 ID:sOEBQUsx.net] 値が連続しないサブ配列とは?
1027 名前:デフォルトの名無しさん [2020/11/29(日) 21:21:35.35 ID:idUZlJAo.net] >>1007 教えません >>1008 [1, 4, 2, 1, 4] とか
1028 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:26:09.30 ID:sOEBQUsx.net] [4, −1, 2, 1]は値が連続するサブ配列で [1, 4, 2, 1, 4]は値が連続しないサブ配列? 連続の定義は?
1029 名前:デフォルトの名無しさん [2020/11/29(日) 21:34:10.34 ID:idUZlJAo.net] >>1010 教えません
1030 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 138日 7時間 40分 24秒
1031 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています