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/
802 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:43:43.54 ID:3yQQm3er.net] 教科書ないから高校数学 確率で一番上に出たやつ。 https://studysapuri.jp/contents/high/article/subject/sp/math00003.html やっぱ高校の教科書に載ってたよなあww 仮に載ってなかったとして大学で使う書籍にもP載ってないって?w > 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
803 名前:253 mailto:sage [2020/10/28(水) 01:56:33.39 ID:Jno143Es.net] ゆとり以降だなそりゃ
804 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 02:11:35.07 ID:d52OC3St.net] 恥の上塗りするくらいなら黙ってればいいのに
805 名前:253 mailto:sage [2020/10/28(水) 02:16:39.09 ID:FRCNqyyj.net] じゃあ何か自慢の回答でもしてよ
806 名前:742 mailto:sage [2020/10/28(水) 05:10:48.17 ID:MEeLXnFm.net] >>770 2/(1/x+1/y) を 2*x*y/(x+y) と変形した場合だと、36%位です(100万回試行してみた)。
807 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 06:02:02.77 ID:W3KKdO+Q.net] >>752 C https://ideone.com/iPEwg8 2 / (1 / x + 1 / y) のエラー率は 38.5% 2 * x * y / (x + y) のエラー率は 40.4% と出た
808 名前:742 mailto:sage [2020/10/28(水) 12:23:39.00 ID:jim4KuYP.net] >>794 h0の計算は、xdやxdをlong doubleにcastする感じで! >double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
809 名前:742 mailto:sage [2020/10/28(水) 13:16:35.16 ID:jim4KuYP.net] 間違えました double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
810 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:16:48.93 ID:GFOWX4AY.net] お題:言語機能のみを使い単方向リストを実装しメソッドpush
811 名前:とpopを実装せよ pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする ノードの持つ値は整数とする [] [ここ壊れてます]
812 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:52:01.80 ID:wtq/xrTf.net] 複数pushできるの? popも個数指定できるの?一個ずつ? pushの戻り値はリスト自身?入れた値?成否?
813 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 01:01:50.46 ID:GFOWX4AY.net] >>797 >>798 pushもpopも値は1つずつ pushの戻り値はなんでもいい
814 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 10:47:03.25 ID:jsAu6jIB.net] >>797 js 入出力のサンプルケース書いてないやつ絶対自分はやってないだろ class SinglyLinkedList { push(value) { this.head = { next: this.head, value } } pop() { if (!this.head) return this.head = this.head.next } str() { let { head } = this, s = "" while (head) { s += head.value + ", " head = head.next } return s } }
815 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:03:58.95 ID:GFOWX4AY.net] >>800 なんで>>797 ,799の仕様でこんな実装になるんだ? お題ちゃんと読んでる?
816 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:11:08.30 ID:moZIRBYC.net] >>801 「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
817 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:16:22.08 ID:95aSRVZj.net] オレもこの「言語機能のみを使い」がわからなかった 「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと わからんから様子見
818 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:18:16.67 ID:GFOWX4AY.net] >>802 >>800 は787の仕様としてただしかったわ すまんな こっちのお題の定義があいまいすぎたらしい 言語機能は問題ない
819 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:21:59.18 ID:GFOWX4AY.net] >>803 ライブラリ使うなって言いたかった あとお題提出前の実装については>>800 に比べるとかなり冗長な実装をしてある ここに晒す気はないが
820 名前:デフォルトの名無しさん [2020/10/29(木) 12:33:09.26 ID:AOpu1Zek.net] stdlib.h使わずに作るの?
821 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:36:05.93 ID:jsAu6jIB.net] >>804 まあええわ 俺もclassは久々に使ったけどできれば使わずに実装したかったわ
822 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:50:57.59 ID:GFOWX4AY.net] >>807 こっちの実装したコードに比べるとそっちのコードはえらくシンプルなんだよな 軽くショックだわ >>801 みたいな口きいてすまんかったな
823 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:24:14.72 ID:GFOWX4AY.net] >>806 リスト以外の実装は自由の想定 stdio.hも使っておk
824 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:27:39.52 ID:GFOWX4AY.net] >>806 C/C++などの言語はmallocなどを使っても良いことにする
825 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 15:09:10.20 ID:dNWGwdex.net] Haskellみたいな純粋関数だとそもそも標準ライブラリだけだと“状態”を作るのも難しいんだよな 同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな ほとんど“準標準”だけど
826 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 16:24:06.73 ID:95aSRVZj.net] State モナドを“準標準”と認めてもらえるなら簡単 Haskell import Control.Monad.State pop :: State [a] a pop = do a <- get modify tail return $ head a push :: a -> State [a] () push x = do modify ((x :)) return () test = do push 1 push 2 push 3 a <- pop b <- pop c <- pop return ([a,b,c]) main = print $ evalState test [] --- 出力 [3,2,1]
827 名前: mailto:sage [2020/10/29(木) 19:01:42.56 ID:7aED6VYA.net] >>797 双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
828 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:02:59.18 ID:c1P6mcgH.net] 持て余すくらいなら「なるべく使わない」とか評価基準を示すだけにしとけばいいのに
829 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:32:46.09 ID:EQ9lcE/o.net] >>803 全く同じこと思ってたわw
830 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:34:40.84 ID:EQ9lcE/o.net] >>807 どうでもいいけどお前のIDもjsだsな
831 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:40:10.12 ID:Pf0NRL7D.net] >>797 Brainfuck push: <[>], pop: <[>]<[-]<
832 名前:デフォルトの名無しさん [2020/10/29(木) 20:59:03.61 ID:zgfLAX1f.net] >>797 push,popってリストじゃなくてスタックの機能じゃ? リストにさせるなら、先頭に追加してく方が速くて楽なのに。 push xs a = a:xs pop (x:xs) = (xs,x) 反転させたいなら最後の最後にすべきだよ。 Haskell ― 使用例用main関数 main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3 (poplst, popval) <- (return.pop) pushlist print pushlist print popval print poplst ― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに) data List a = Null | Cons a (List a) deriving (Show) push xs a = xs +++ (Cons a Null) pop xs = (myinit xs, mylast xs) Null +++ ys = ys (Cons x xs) +++ ys = Cons x (xs +++ ys) myinit (Cons x Null) = Null myinit (Cons x xs) = Cons x (myinit xs) mylast (Cons x Null) = x mylast (Cons _ xs) = mylast xs
833 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:10:47.05 ID:wtq/xrTf.net] >>797 JavaScript class List { #data = [] push(n) { this.#data = [n, this.#data] return this } pop() { const [head, tail] = this.#data if (tail) this.#data = tail; return head } toArray() { return this.#data.flat(Infinity) } toString() { return String(this.toArray()) } toJSON() { return this.toArray() } } const list = new List list .push(0) .push(7) .push(2) console.log('文字列: ' + list) //=> 文字列: 2,7,0 console.log('JSON: ' + JSON.stringify(list)) //=> JSON: {"test":[2,7,0]} list.pop() //=> 2 list.pop() //=> 7 list.pop() //=> 0 list.pop() //=> undefined
834 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:13:39.21 ID:wtq/xrTf.net] うわ console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]} だった
835 名前:デフォルトの名無しさん [2020/10/29(木) 23:09:01.60 ID:MaNQDMIt.net] >>813 お題 双方向リストをC89で実装してください
836 名前:253 mailto:sage [2020/10/29(木) 23:20:15.73 ID:UgpGZWA4.net] >>817
837 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:24:39.19 ID:3o7XtB23.net] >>797 ocaml https://ideone.com/8ceFxk type 'a _list = Nil | Cons of 'a * 'a _list exception EmptyListException let push xs x = Cons(x, xs) let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c) let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs let x, xs = pop (push (push (push Nil 1) 2) 3) let () = print_int x; each print_int xs
838 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:26:08.36 ID:GFOWX4AY.net] >>813 双方向書きたいってことなら書けば お題は単方向だけど
839 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:06:20.24 ID:aDtUVDPI.net] >>812 を改良? State [Int] だとあらかじめ用意した一個のstackしか使えない 噂に聞いたことあつたST monadで複数のスタック使えるように改造 Haskell import Control.Monad import Control.Monad.ST import Data.STRef data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show) push stk val = modifySTRef stk (N val) pop stk = car <$> readSTRef stk <* modifySTRef stk cdr main = print $ runST $
840 名前: do sA <- newSTRef Empty sB <- newSTRef Empty push sA 'o' >> push sA 'o' >>push sA 'f' push sB 'r' >> push sB 'a' >> push sB 'b' a1<-pop sA a2<-pop sA a3<-pop sA b1<-pop sB b2<-pop sB b3<-pop sB return [a1,a2,a2,b1,b2,b3] ---- 出力 "foobar" [] [ここ壊れてます]
841 名前:253 mailto:sage [2020/10/30(金) 00:07:47.66 ID:hMjmzAXb.net] >>797 Perl5 公式マニュアルに書かれている通りsplice関数を使ってpush, popを記述できる。 splice(@a,@a,0,$x); # push(@a, $x) splice(@a,-1); # pop(@a) なんだけどspliceを使わず言語のstatementだけでpush, pop関数を記述すると…こんな感じ use v5.18; use feature 'signatures'; no warnings "experimental::signatures"; sub Push($a, $x) { @$a = (@$a, $x); } sub Pop($a) { my @a = @$a; my $b = $a[-1]; @$a = @a[0..$#a-1]; $b; } my @s = (1,2,3); # test main Push(\@s, 4); say "@s"; my $y = Pop(\@s); say $y; 実行結果 ~ $ perl 18_787_push_pop.pl 1 2 3 4 4 1 2 3
842 名前:253 mailto:sage [2020/10/30(金) 00:09:56.81 ID:hMjmzAXb.net] >>826 say $y; の下に書いてあった最後の行 say "@s"; をコピペしそびれた…orz
843 名前:253 mailto:sage [2020/10/30(金) 00:22:38.86 ID:hMjmzAXb.net] >>826 Pop関数はこっちの方がいいな、無駄なコピーもないし。 sub Pop($a) { my $b = @$a[-1]; delete @$a[-1]; $b; }
844 名前:253 mailto:sage [2020/10/30(金) 00:32:51.98 ID:hMjmzAXb.net] >>828 deleteは削除したスカラー値を返すわ。だから以下でいいんだ sub Pop($a) { my $b = @$a[-1]; delete @$a[-1]; }
845 名前:253 mailto:sage [2020/10/30(金) 00:34:30.90 ID:hMjmzAXb.net] >>829 my $b = @$a[-1]; 不要だった…orz sub Pop($a) { delete @$a[-1]; }
846 名前:デフォルトの名無しさん [2020/10/30(金) 00:50:28.84 ID:9RgBA+ge.net] >>797 Java https://paiza.io/projects/JKwjWCxSc6dHv_ItEaqwlQ
847 名前:デフォルトの名無しさん [2020/10/30(金) 02:22:50.19 ID:9RgBA+ge.net] >>821 Java https://paiza.io/projects/wtaAasQr_Nu5Zw2D1KoPwg
848 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 07:07:30.18 ID:cChJ6BWU.net] >>822 あ?
849 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 23:30:40.86 ID:hYhF3+Ov.net] Brainfuck読めないわ 覚えようかな
850 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:49:55.42 ID:QnYm1bfS.net] お題 与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み) どちらもヒットしないときは考慮しなくていいです treakOrTreat("trick or treat") // => trick treakOrTreat(". tr ick") // => trick treakOrTreat("ttrriecatk") // => treat treakOrTreat("tri kc eat") // => treat treakOrTreat("my money") // => none
851 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:51:26.24 ID:QnYm1bfS.net] >>835 js(self) function treakOrTreat(text) { const [tri] = /t.*r.*i.*c.*k/.exec(text) || [] const [tre] = /t.*r.*e.*a.*t/.exec(text) || [] if (!tri && !tre) return 'none' if (!tri) return 'treat' if (!tre) return 'trick' return tri.length < tre.length ? "trick" : "treat" }
852 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 14:54:50.69 ID:HHhQTZ6R.net] 関数名のミススペリングは修正していいですか
853 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:02:04.99 ID:QnYm1bfS.net] ごっつtypoしてたすまんFIXME
854 名前:デフォルトの名無しさん [2020/10/31(土) 15:07:31.21 ID:DmLmDhBA.net] >>835 Common Lisp https://ideone.com/L8wigO
855 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:33:31.91 ID:I05R+wBh.net] 相変わらずキモいなあ、いつもの勝手に認定キッズ ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
856 名前:デフォルトの名無しさん [2020/10/31(土) 15:36:09.16 ID:DmLmDhBA.net] >>835 Common Lisp https://ideone.com/qHuipq >>839 は無駄な条件判定(二つめの (null a))があったので修正
857 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:44:11.18 ID:pGrSKCPz.net] >>835 JavaScript function trickOrTreat(str = '') { const trick = [...'trick'] const treat = [...'treat'] let result = 'none' for (const c of str) { if (c === trick[0]) trick.shift() if (c === treat[0]) treat.shift() if (!trick.length || !treat.length) { result = trick.length ? 'treat' : 'trick' break; } } console.log(result) }
858 名前:デフォルトの名無しさん [2020/10/31(土) 15:54:22.22 ID:i0S/O8KX.net] >>797 C https://paiza.io/projects/7O3xqQfCoYOhAz-48TxxWw
859 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 16:42:52.45 ID:B0ELcd4k.net] >>835 Haskell https://ideone.com/2Rb2sz
860 名前:デフォルトの名無しさん [2020/10/31(土) 17:10:35.46 ID:M62mfk9p.net] >>797 Perl https://paiza.io/projects/E1ha4EgvaVhalIRuJ_To-g
861 名前:デフォルトの名無しさん [2020/10/31(土) 17:42:14.32 ID:/zmNVLOW.net] >>797 Kotlin https://paiza.io/projects/mB7s1uC_4FJk1MFTDpLYsA
862 名前:デフォルトの名無しさん [2020/10/31(土) 21:33:28.24 ID:g64iH70d.net] >>835 Java https://paiza.io/projects/jCNOEenrSmdOMXo6Fl2wyQ
863 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:58:58.47 ID:t2sIU1o6.net] >>835 Ruby def trickOrTreat( str ) trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ ) treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ ) return 'none' unless trick or treat return 'trick' unless treat return 'treat' unless trick return (trick[0].size < treat[0].size)? '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 ) }
864 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 22:19:45.63 ID:B0ELcd4k.net] >>844 改定 やはりHaskellerがこのお題でparsec使わないのはダメという事で Haskell import Text.ParserCombinators.Parsec makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String first xs ys = case (runParser (makeP xs) () "" ys) of Left _ -> (1, 0) Right x -> (0, length x) trickOrTreat x = case compare (first "trick" x) (first "treat" x) of LT -> "trick" GT -> "treat" otherwise -> "Happy Halloween" main = do mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]
865 名前:デフォルトの名無しさん [2020/10/31(土) 22:49:38.34 ID:pe+8/Oyn.net] >>835 C #include<stdio.h> char* trickOrTreat(char*s, char*tk, char*tt){ if(!*tk)return "trick"; if(!*tt)return "treat"; if(!*s) return "none"; if(*s == *tk)tk++; if(*s == *tt)tt++; return trickOrTreat(s+1, tk, tt); } int main(void){ char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money", "treat or trick", "treat or trick t",}; const int size = sizeof(str)/sizeof(str[0]); char tk[] = "trick"; char tt[] = "treat"; int i; for(i=0; i<size; i++){ printf("%s\n", trickOrTreat(str[i], tk, tt)); } return 0; }
866 名前:253 mailto:sage [2020/10/31(土) 22:58:55.98 ID:i+h07tFB.net] >>835 Perl5 for (<DATA>) { chomp; %h = map{$_ => [split'']} qw{trick treat}; $k = 'none'; for $c (split'') { for (keys %h) { $r = $h{$_}; shift(@$r) if $c eq $$r[0]; unless (@$r) { $k = $_; goto L } } } L: print "$_ -> $k\n"; } __DATA__ trick or treat . tr ick ttrriecatk tri kc eat my money 実行結果 ~ $ perl 18_825_trickOrTreat.pl trick or treat -> trick . tr ick -> trick ttrriecatk -> treat tri kc eat -> treat my money -> none
867 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:10:35.06 ID:8FYB/kmH.net] >>851 なんでお前ずっとコテハンつけてんの?
868 名前:253 mailto:sage [2020/10/31(土) 23:20:38.29 ID:i+h07tFB.net] >>852 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる 気にしないで
869 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:26:17.77 ID:OVAIfmUR.net] >>797 c https://ideone.com/9grZQe
870 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:27:34.12 ID:wd4K8eMC.net] >>853 専ブラ使えばいいのに
871 名前:253 mailto:sage [2020/10/31(土) 23:32:26.70 ID:i+h07tFB.net] >>855 IPアドレスが変わったり日にちがたった自分のレスを簡単に表示し分けられる専ブラで良いのある? 出来ればLinuxで。ちなStyleは好みではない
872 名前:253 mailto:sage [2020/10/31(土) 23:38:27.89 ID:i+h07tFB.net] >>854 教科書に載っているようなきれいなコード書くね
873 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:54:01.35 ID:OVAIfmUR.net] >>857 サンクスコ でも、引数の評価順については正直お行儀悪いんで 勉強してるみんなはそのへん各自ぐぐってみてね
874 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 00:59:27.52 ID:KABEK1ar.net] >>835 Ruby text = <<'TEXT' trick or treat . tr ick ttrriecatk tri kc eat my money TEXT # 配列化 Trick = "trick".chars Treat = "treat".chars 次へ続く
875 名前:849 mailto:sage [2020/11/01(日) 01:00:32.73 ID:KABEK1ar.net] >>859 の続き def find_index( str, original ) idx_2 = 0 str.each_char.with_index do |char, idx| # 1文字ずつ処理する idx_2 += 1 if char == original[ idx_2 ] return idx if idx_2 == original.length # すべての文字が一致 end nil end results = text.each_line.map do |line| trick = find_index( line, Trick ) treat = find_index( line, Treat ) if !( trick || treat ) then "none" elsif !trick then "treat" elsif !treat then "trick" elsif trick < treat then "trick" elsif trick > treat then "treat" else "same" end end p results #=> ["trick", "trick", "treat", "treat", "none"]
876 名前:デフォルトの名無しさん [2020/11/01(日) 01:29:12.30 ID:17LNcGyj.net] >>835 Kotlin https://paiza.io/projects/pLXGwy1V_3FlM4eqH2w5tg
877 名前:デフォルトの名無しさん [2020/11/01(日) 01:49:31.61 ID:17LNcGyj.net] >>835 C https://paiza.io/projects/hjm6unXa-mcUi6cx1mTJ9g
878 名前:838 mailto:sage [2020/11/01(日) 12:58:01.92 ID: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 名前:蟻人間 mailto:sage [2020/11/01(日) 14:40:36.23 ID:wOVD56Lv.net] お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。
880 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:05:05.76 ID:+nQAPqAx.net] 次行ってみよう
881 名前:蟻人間 mailto:sage [2020/11/01(日) 16:41:27.74 ID:wOVD56Lv.net] 参考:https://www.asahi.com/articles/ASNBS733ZNBMPTIL00Q.html
882 名前:蟻人間 mailto:sage [2020/11/01(日) 16:44:49.88 ID:wOVD56Lv.net] これも:https://maidonanews.jp/article/13879682
883 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:51:14.83 ID:VQGUeFT5.net] お前らは競技プログラミングとかやってる?
884 名前:253 mailto:sage [2020/11/01(日) 16:54:48.84 ID:I8lyxV1q.net] >>868 やろうとしたことはあるがまだ未経験 何か受験勉強みたいになっちゃってるコンテストには魅力を感じない でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
885 名前:蟻人間 mailto:sage [2020/11/01(日) 17:00:25.77 ID:wOVD56Lv.net] >>865 あんまりバカにするなよ。住所変換できないと大坂大混乱になるよ。
886 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:18:29.18 ID:EgIfcLXC.net] バカにしてるのはおまえ 他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ 数年〜十数年或いはそれ以上旧住所で配送可能。舐めすぎ
887 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:31:11.77 ID:+nQAPqAx.net] >>870 ここでそのお題といても大混乱が回避できるわけでもなし そういう問題じゃなくてそろそろ自分にいい問題作るセンスがない事自覚すべき
888 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:35:33.69 ID:S9fsJ+JS.net] データ引っ張ってくるだけじゃん ただの知識問題は悪問
889 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:32:31.31 ID:erpRcPg0.net] やってみたが 競技系はプログラミングのスキル向上には役立たんよ
890 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:50:53.93 ID:4+fLUvoM.net] >>867 このサイト気持ち悪いな
891 名前:蟻人間 mailto:sage [2020/11/01(日) 19:52:59.24 ID:wOVD56Lv.net] >>875 太陽風を読めよ。
892 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 19:57:24.03 ID:wWMHVvTS.net] >>876 消えろ
893 名前:蟻人間 mailto:sage [2020/11/01(日) 20:04:08.68 ID:wOVD56Lv.net] >>877 お前がえろ
894 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 00:22:13.64 ID:bEILeQs7.net] >>835 octave https://ideone.com/BkciwT
895 名前:デフォルトの名無しさん [2020/11/02(月) 04:28:03.49 ID:2/AbCXtL.net] >>835 Perl https://paiza.io/projects/Ol_sOAbb2ZYW4hIDFLj2wQ 正規表現使ってみました。
896 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:45:05.89 ID:BfD57ecO.net] "trick"と"treat"を受理するオートマトンを作って 入力文字列から1文字ずつ与えて状態遷移(または待機)させていく 末尾まで先に受理されたほうを答えとする みたいなことだけ考えた
897 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:48:28.19 ID:BfD57ecO.net] けど実装すると無駄にでかくなりそう
898 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:04:22.80 ID:/BOVDIIM.net] オートマトンって言語でなんか表現できる構造ある?
899 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:41:03.91 ID: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 名前:蟻人間 mailto:sage [2020/11/02(月) 12:23:25.05 ID:iXWhExA8.net] お題:パラボラアンテナが理論上の焦点に電波を集めることを示しなさい。 パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。 このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。
901 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:23:58.15 ID:UfGVYnOo.net] まじでセンスないな
902 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:36:09.22 ID:zo3ZJgwO.net] パラボラアンテナの半径ってどこのことだよ