プログラミングのお題スレ Part18at TECH
プログラミングのお題スレ Part18 - 暇つぶし2ch878:838
20/11/01 12:58:01.92 g/v4ZA9S.net
>>835 Ruby
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}

879:蟻人間
20/11/01 14:40:36.23 wOVD56Lv.net
お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。

880:デフォルトの名無しさん
20/11/01 16:05:05.76 +nQAPqAx.net
次行ってみよう

881:蟻人間
20/11/01 16:41:27.74 wOVD56Lv.net
参考:URLリンク(www.asahi.com)

882:蟻人間
20/11/01 16:44:49.88 wOVD56Lv.net
これも:URLリンク(maidonanews.jp)

883:デフォルトの名無しさん
20/11/01 16:51:14.83 VQGUeFT5.net
お前らは競技プログラミングとかやってる?

884:253
20/11/01 16:54:48.84 I8lyxV1q.net
>>868
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる

885:蟻人間
20/11/01 17:00:25.77 wOVD56Lv.net
>>865
あんまりバカにするなよ。住所変換できないと大坂大混乱になるよ。

886:デフォルトの名無しさん
20/11/01 17:18:29.18 EgIfcLXC.net
バカにしてるのはおまえ
他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ
数年~十数年或いはそれ以上旧住所で配送可能。舐めすぎ

887:デフォルトの名無しさん
20/11/01 17:31:11.77 +nQAPqAx.net
>>870
ここでそのお題といても大混乱が回避できるわけでもなし
そういう問題じゃなくてそろそろ自分にいい問題作るセンスがない事自覚すべき

888:デフォルトの名無しさん
20/11/01 17:35:33.69 S9fsJ+JS.net
データ引っ張ってくるだけじゃん
ただの知識問題は悪問

889:デフォルトの名無しさん
20/11/01 18:32:31.31 erpRcPg0.net
やってみたが
競技系はプログラミングのスキル向上には役立たんよ

890:デフォルトの名無しさん
20/11/01 18:50:53.93 4+fLUvoM.net
>>867
このサイト気持ち悪いな

891:蟻人間
20/11/01 19:52:59.24 wOVD56Lv.net
>>875
太陽風を読めよ。

892:デフォルトの名無しさん
20/11/01 19:57:24.03 wWMHVvTS.net
>>876
消えろ

893:蟻人間
20/11/01 20:04:08.68 wOVD56Lv.net
>>877
お前がえろ

894:デフォルトの名無しさん
20/11/02 00:22:13.64 bEILeQs7.net
>>835 octave
URLリンク(ideone.com)

895:デフォルトの名無しさん
20/11/02 04:28:03.49 2/AbCXtL.net
>>835
Perl
URLリンク(paiza.io)
正規表現使ってみました。

896:デフォルトの名無しさん
20/11/02 04:45:05.89 BfD57ecO.net
"trick"と"treat"を受理するオートマトンを作って
入力文字列から1文字ずつ与えて状態遷移(または待機)させていく
末尾まで先に受理されたほうを答えとする
みたいなことだけ考えた

897:デフォルトの名無しさん
20/11/02 04:48:28.19 BfD57ecO.net
けど実装すると無駄にでかくなりそう

898:デフォルトの名無しさん
20/11/02 10:04:22.80 /BOVDIIM.net
オートマトンって言語でなんか表現できる構造ある?

899:デフォルトの名無しさん
20/11/02 10:41:03.91 5JhQS2vf.net
正規表現で表現できる⇔オートマトンで受理できる
でしょ?
今回なら入力xに対し出力がtrickである場合を
[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*k.*
|[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*e[^ka]*k.*
...
(10パターン)
....
と正規表現だけで表現できてしまう

900:蟻人間
20/11/02 12:23:25.05 iXWhExA8.net
お題:パラボラアンテナが理論上の焦点に電波を集めることを示しなさい。
パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。
このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。

901:デフォルトの名無しさん
20/11/02 12:23:58.15 UfGVYnOo.net
まじでセンスないな

902:デフォルトの名無しさん
20/11/02 12:36:09.22 zo3ZJgwO.net
パラボラアンテナの半径ってどこのことだよ

903:デフォルトの名無しさん
20/11/02 13:43:55.18 gftnEWfN.net
common lisp
URLリンク(ideone.com)
うーん微妙

904:デフォルトの名無しさん
20/11/02 14:26:45.62 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:デフォルトの名無しさん
20/11/02 18:10:30.68 Ac4tp6ZL.net
>>835
Haskell
URLリンク(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" ]

906:デフォルトの名無しさん
20/11/02 19:01:54.49 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:デフォルトの名無しさん
20/11/02 19:55:30.38 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
20/11/02 20:41:57.79 PEXljxha.net
>>835 octave
URLリンク(ideone.com)
・残り文字数数える関数fがガバガバだったので修正

909:デフォルトの名無しさん
20/11/02 20:50:30.27 LqVECFSh.net
>>892
Java
URLリンク(paiza.io)

910:デフォルトの名無しさん
20/11/02 20:55:38.75 UfGVYnOo.net
>>892
実用的じゃん

911:デフォルトの名無しさん
20/11/02 21:39:44.31 PEXljxha.net
>>892 octave
URLリンク(ideone.com)

912:デフォルトの名無しさん
20/11/02 22:00:22.68 PEXljxha.net
>>892 octave
URLリンク(ideone.com)
・若干の変更

913:デフォルトの名無しさん
20/11/02 22:02:25.78 i1cL0pVh.net
>>885
消えろ

914:デフォルトの名無しさん
20/11/02 22:12:37.48 2/AbCXtL.net
>>892
Perl
URLリンク(paiza.io)

915:デフォルトの名無しさん
20/11/02 23:19:41.46 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:デフォルトの名無しさん
20/11/03 00:18:12.81 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:デフォルトの名無しさん
20/11/03 01:33:31.56 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:デフォルトの名無しさん
20/11/03 02:32:26.13 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:デフォルトの名無しさん
20/11/03 08:10:12.54 WKYb8LN0.net
>>903
きれいだな

920:デフォルトの名無しさん
20/11/03 09:07:39.02 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:デフォルトの名無しさん
20/11/03 09:10:16.73 psuX0FGw.net
美しさだけなら某集合論用処理系に勝る
ものはないと思うが....
>>901の短時間回答能力とHaskelの潜在能力は
驚嘆すべきかも

922:デフォルトの名無しさん
20/11/03 09:15:47.91 psuX0FGw.net
間違ってたときのコード貼ってしまったw
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。

923:デフォルトの名無しさん
20/11/03 21:04:35.96 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:デフォルトの名無しさん
20/11/04 00:20:20.72 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:デフォルトの名無しさん
20/11/04 00:20:22.20 kNuSoIVx.net
windows知らんけど
バッチ・ファイルすげぇなww

926:デフォルトの名無しさん
20/11/04 18:59:14.79 M+x6liG8u
【アフィリエイト】ブログで「月100万円稼ぐ方法」を初心者向けにプロブロガーが解説
URLリンク(www.youtube.com)
【実例有り】ブログで月1万円稼ぐまでの具体的な道筋を教える【プロが解説】
URLリンク(www.youtube.com)
【案件も公開】ブログで月20万円稼ぐ方法の全て。具体的な道筋や戦略も全て公開【雑記でもいけた】
URLリンク(www.youtube.com)
ブログ収益が大きく伸びた、たった1つのきっかけを話す【ネタバレ:人と会う】
URLリンク(www.youtube.com)
ブログで稼ぐ仕組み徹底解説】初心者にもやさしく、丁寧に説明
URLリンク(www.youtube.com)
【ミスるとヤバい】特化ブログと雑記ブログ、どっちがいいの?おすすめの運営方法も解説!
URLリンク(www.youtube.com)
【危険】ブログで稼げずに「挫折」してしまう人の特徴【初心者は特に注意】
URLリンク(www.youtube.com)

927:デフォルトの名無しさん
20/11/04 20:24:03.31 uO47xEs9.net
>>902 Ruby
URLリンク(ideone.com)

928:デフォルトの名無しさん
20/11/05 03:19:19.40 EuRO0zRP.net
>>902
C++
URLリンク(ideone.com)

929:デフォルトの名無しさん
20/11/05 20:02:28.58 pDv0veJc.net
お題
'□'(正方形)と'_'(空白)で表される図形を45度回


930:転して描画せよ。 [例1] □ /\ \/ [例2] ___□ □□_□ _□□□ /\ \/\ /\/ /\ \/\/\/  \/\/   \/



931:デフォルトの名無しさん
20/11/05 20:47:59.87 uObXfCng.net
デカくなっててワロタ
良さげなお題

932:デフォルトの名無しさん
20/11/05 23:31:16.69 5bWXoO+B.net
>>914 html
<textarea style="transform:rotate(45deg)">
___□
□□_□
_□□□
</textarea>

933:デフォルトの名無しさん
20/11/05 23:39:12.30 W9kenpkY.net
>>916
すげぇな
今はCSSでこんなことまでできるのか

934:デフォルトの名無しさん
20/11/05 23:40:00.35 uObXfCng.net
:scale(2)もしとけ

935:デフォルトの名無しさん
20/11/06 01:21:28.35 DUBJiW5Z.net
>>914
haskell
URLリンク(ideone.com)

936:デフォルトの名無しさん
20/11/06 03:01:56.79 2mWV4tVe.net
>>902
Java
URLリンク(paiza.io)

937:253
20/11/06 13:23:23.40 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:デフォルトの名無しさん
20/11/06 13:24:39.43 DUBJiW5Z.net
>>914
haskell
素直に内包表記使ったVer.
URLリンク(ideone.com)

939:デフォルトの名無しさん
20/11/07 15:16:17.29 dGj5mxP2.net
sed 's/□/◇/g'
あ、いや、なんでもないです。忘れてください。

940:デフォルトの名無しさん
20/11/07 15:50:17.56 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:デフォルトの名無しさん
20/11/07 19:47:28.12 /E6xY+R5.net
バッチでやるとかいい根性してる

942:デフォルトの名無しさん
20/11/07 21:06:37.63 anINQjB0.net
>>914 Common Lisp
URLリンク(ideone.com)

943:デフォルトの名無しさん
20/11/07 22:21:52.44 alCltY04.net
>>918
scale(1.41421356)でしょ

944:デフォルトの名無しさん
20/11/07 23:04:28.88 zLEnd997.net
>>902
ビット操作で直接作れた
URLリンク(paiza.io)

945:デフォルトの名無しさん
20/11/08 00:05:04.78 DLA7KrcO.net
>>924
バッチファイル兄貴いいぞ
もっとやれ

946:デフォルトの名無しさん
20/11/08 00:15:55.29 ct8WHwWl.net
バッチよくやってるな
batにトランスパイルできるもっといい感じの構文の言語とかないの

947:デフォルトの名無しさん
20/11/08 02:24:23.73 vLTv8mzL.net
バッチで>>902やる猛者はいないのか?
QZならできそうだがだんまりか?

948:デフォルトの名無しさん
20/11/08 02:34:25.46 HKu5GaPi.net
>>928
このコードZen2までのAMDのCPUだと多分とんでもなく遅くなる
ここで使ってるpdep命令がintelのやZen3と比べて100倍以上遅いから

949:
20/11/08 03:02:51.65 H3a4zXqH.net
>>931
私は C しか書けません

950:デフォルトの名無しさん
20/11/08 03:56:26.07 YnyAcD/m.net
>>930
こんなのならあった
URLリンク(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

951:デフォルトの名無しさん
20/11/08 03:57:27.82 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:デフォルトの名無しさん
20/11/08 04:20:05.05 YnyAcD/m.net
>>930
もうひとつ。
URLリンク(github.com)
>>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:デフォルトの名無しさん
20/11/08 05:03:48.08 YnyAcD/m.net
>>930
シェルスクリプトからの変換系:
URLリンク(github.com)
URLリンク(github.com)
あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
URLリンク(github.com)
タイプ的には >>936 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( URLリンク(batsh.org) )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。

954:デフォルトの名無しさん
20/11/08 05:16:53.07 YnyAcD/m.net
>>937
moongiftに紹介記事があった。
URLリンク(www.moongift.jp)のスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…

955:デフォルトの名無しさん
20/11/08 08:18:54.23 ct8WHwWl.net
>>937
これきれいだな

956:デフォルトの名無しさん
20/11/09 23:19:00.95 biYC5NlX.net
もうすぐポッキーの日
[お題] 人口合計でオール1
URLのページに都道府県別の人口が載っている。
 今回使用するのは、2019/10のデータ
 URLリンク(ideone.com)
 同じ県は一回のみで、異なる県を何県でも選んでよい。
 (つまり選び方は全部で 2^47 種類)
 人口合計が"1"のみの数字となる選び方は何種類あるか?
 (実質、1111万1111人, 1億1111万1111人になる選び方)
※一発正解問題、実行時間3秒程度。
 同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。

957:デフォルトの名無しさん
20/11/09 23:52:24.94 XExSNiE1.net
11111111 は43?
111111111はオンラインコンパイラでタイムアウトorz

958:デフォルトの名無しさん
20/11/10 00:38:20.57 duQVrAg3.net
面白そうなお題

959:デフォルトの名無しさん
20/11/10 00:38:46.30 qJS2/p90.net
111111111 は650かな?

960:デフォルトの名無しさん
20/11/10 00:45:23.62 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:デフォルトの名無しさん
20/11/10 02:25:54.45 903MPdZb.net
batコーイ!!

962:デフォルトの名無しさん
20/11/10 02:49:15.00 VuEsWlWs.net
>>940
URLリンク(ideone.com)
力任せなコードだけどどうにか時間内に終わった

963:デフォルトの名無しさん
20/11/10 13:44:24.83 3xGJBleZ.net
典型的なdp問題じゃねえの

964:929
20/11/10 17:29:30.75 q5cN/btj.net
>>940
・想定解はDPの数え上げ
 さすがに1.1億×47は苦しいので、
 1.1億に関しては、(全人口 - 1.1億)で計算する。
 そうすれば、1600万×47の計算量で済む。
 
 URLリンク(ideone.com)
  下にpython(numpy)で想定解追加

965:253
20/11/11 00:47:47.87 vox+S3u3.net
(´・ω・`)

966:デフォルトの名無しさん
20/11/11 18:19:57.16 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:デフォルトの名無しさん
20/11/12 15:39:00.87 VX9X1ew1.net
お題1
1~nまでの偶数をランダムに出力してください
お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください

入力: 1 2 10
出力:
1
1
3
9
1
7
5

968:デフォルトの名無しさん
20/11/12 15:58:04.88 uK53dAw4.net
>>951 を読んで、やっぱり日本語は非論理的な言語だな、と思った。

969:デフォルトの名無しさん
20/11/12 16:04:34.29 VX9X1ew1.net
書き手の問題だと思うよ

970:デフォルトの名無しさん
20/11/12 18:42:17.55 HU5jtk1k.net
オレは深まりゆく秋を感じた

971:デフォルトの名無しさん
20/11/12 19:26:25.71 VX9X1ew1.net
ふーけゆくー秋の夜ー

972:デフォルトの名無しさん
20/11/12 19:34:08.43 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:デフォルトの名無しさん
20/11/12 23:53:28.13 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:デフォルトの名無しさん
20/11/13 20:43:02.05 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:デフォルトの名無しさん
20/11/13 22:58:48.40 ghr6tNw2.net
オンラインでbat動かせるサイトない?
>>958試して見たいんやけど

977:デフォルトの名無しさん
20/11/13 23:20:18.52 a1Z/nYk3.net
bat兄貴天才やな

978:デフォルトの名無しさん
20/11/14 00:46:02.44 WHpB6hAc.net
>>959
それをお題にするのはありかも
947を読んで同じ動きをするプログラムを書け、とかね

979:デフォルトの名無しさん
20/11/14 06:23:08.91 rQXll7XK.net
過疎るのもわかるわ

980:デフォルトの名無しさん
20/11/15 04:26:34.92 UMNa3GdF.net
>>951
Java
URLリンク(paiza.io)

981:デフォルトの名無しさん
20/11/15 18:33:50.31 UMNa3GdF.net
お題
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください
入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴

982:デフォルトの名無しさん
20/11/15 18:40:06.62 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:デフォルトの名無しさん
20/11/15 18:41:22.95 UMNa3GdF.net
はやいな

984:デフォルトの名無しさん
20/11/15 20:20:51.56 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:デフォルトの名無しさん
20/11/15 20:22:58.52 KOddDUPF.net
>>967
.split(`,`) では

986:デフォルトの名無しさん
20/11/15 20:23:55.05 KOddDUPF.net
すまん。バッククウォートだった。

987:デフォルトの名無しさん
20/11/16 00:51:51.08 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:デフォルトの名無しさん
20/11/16 03:31:51.13 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:デフォルトの名無しさん
20/11/16 03:32:04.47 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:デフォルトの名無しさん
20/11/20 19:52:50.75 HawO8Ftl.net
>>951
Kotlin
URLリンク(paiza.io)

991:とくめい
20/11/24 01:34:45.23 SQQDs1Pp.net
kakeruyamasato@gmail.comこのメアドを悪用してみせて

992:デフォルトの名無しさん
20/11/24 08:07:25.33 aaTbFie9.net
通報しますた

993:デフォルトの名無しさん
20/11/25 01:49:24.25 O2Mln20T.net
>>964
Kotlin
URLリンク(paiza.io)

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

995:デフォルトの名無しさん
20/11/27 01:08:20.91 bIFui41M.net
>>977
なんていう言語?

996:デフォルトの名無しさん
20/11/27 02:57:17.73 ocMZsxYX.net
>>978
rubyでしょ

997:デフォルトの名無しさん
20/11/27 19:31:40.66 Pnsgs34G.net
rubyだったか。

998:デフォルトの名無しさん
20/11/28 00:37:28.60 PcPNtVOH.net
%がわからないって怒られた

999:デフォルトの名無しさん
20/11/28 07:20:49.13 mYohOVrw.net
お題
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1000:デフォルトの名無しさん
20/11/28 07:34:45.42 CtkueG9H.net
>>982 bat
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday

1001:デフォルトの名無しさん
20/11/28 08:05:44.72 nEfgRBi9.net
意外と難しいな

1002:デフォルトの名無しさん
20/11/28 08:40:11.81 wyvnQiBB.net
>>982 Ruby
puts Date::DAYNAMES.rotate
# => Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1003:デフォルトの名無しさん
20/11/28 09:00:26.43 2Muxtrov.net
>>977
問題の解釈違わねえ?

1004:デフォルトの名無しさん
20/11/28 09:12:26.58 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:デフォルトの名無しさん
20/11/28 11:36:22.72 FGpMIdZG.net
>>981
( 1..10 ) % 2
range に、% というメソッドは無い!

1006:デフォルトの名無しさん
20/11/28 12:27:13.39 GOv1h+p2.net
>>988
NEWS for Ruby 2.6.0
2.5.0 以降の変更
URLリンク(docs.ruby-lang.org)
> Range
> 新規メソッド
> Range#% が追加されました。 [feature#14697]

1007:デフォルトの名無しさん
20/11/28 12:38:57.57 L52xXSLK.net
予想通りの流れになってくれて何より

1008:977
20/11/28 14:12:40.28 FGpMIdZG.net
ruby -e 'p ( ( 1..5 ) % 2 ).to_a'
#=> [1, 3, 5]
2 は、各ステップの大きさ

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

1010:デフォルトの名無しさん
20/11/28 16:34:18.46 gB71rnHS.net
>>992
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
URLリンク(www.jdoodle.com)
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
URLリンク(techiedelight.com)
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
URLリンク(paiza.io)

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

1012:デフォルトの名無しさん
20/11/28 17:26:12.48 FGpMIdZG.net
paiza は、いつも新しい
codepad は、古いような気がする

1013:デフォルトの名無しさん
20/11/28 17:30:47.77 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:デフォルトの名無しさん
20/11/28 17:57:16.56 myGQAvEM.net
>>993
thx
でもiphoneでどのサイトもコピペができないorz
なんでなんだろう?

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

1016:デフォルトの名無しさん
20/11/28 22:44:23.07 wyvnQiBB.net
>>998
shuffleの代わりにsampleを使うといい

1017:デフォルトの名無しさん
20/11/29 06:10:23.39 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:デフォルトの名無しさん
20/11/29 12:05:03.89 POmPIOqu.net
>>982 Julia
using Dates
for w=1:7
println(Dates.format(Date(1,1,w), "E"))
end

1019:デフォルトの名無しさん
20/11/29 14:25:29.24 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
20/11/29 15:02:42.80 onV9IrOo.net
>>982Perl5
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
20/11/29 17:21:11.49 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:デフォルトの名無しさん
20/11/29 20:08:13.17 idUZlJAo.net
>>982
Java
URLリンク(paiza.io)

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

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

1025:
20/11/29 21:07:17.97 POdKASdd.net
>>1006
>サブ配列
の定義を教えてください

1026:デフォルトの名無しさん
20/11/29 21:15:00.96 sOEBQUsx.net
値が連続しないサブ配列とは?

1027:デフォルトの名無しさん
20/11/29 21:21:35.35 idUZlJAo.net
>>1007
教えません
>>1008
[1, 4, 2, 1, 4]
とか

1028:デフォルトの名無しさん
20/11/29 21:26:09.30 sOEBQUsx.net
[4, -1, 2, 1]は値が連続するサブ配列で
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?

1029:デフォルトの名無しさん
20/11/29 21:34:10.34 idUZlJAo.net
>>1010
教えません

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

1031:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch