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/
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] パラボラアンテナの半径ってどこのことだよ
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] ___□ □□_□ _□□□ /\ \/\ /\/ /\ \/\/\/ \/\/ \/ [] [ここ壊れてます]