1 名前:デフォルトの名無しさん [2014/09/21(日) 00:34:47.71 ID:WCtTxfaP] プログラミングのお題スレです。 前スレ プログラミングのお題スレ Part4 peace.2ch.net/test/read.cgi/tech/1402622093/ プログラミングのお題スレ toro.2ch.net/test/read.cgi/tech/1357191974/ 出されたお題をコーディングして罵られるスレ toro.2ch.net/test/read.cgi/tech/1354393458/ 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 【ソースコードが長くなったら】 codepad.org/ ideone.com/ 宿題は宿題スレがあるのでそちらへ。
89 名前:山下雄介@上級者 ◆1Bax/hBUwKIJ mailto:sage [2014/09/28(日) 00:39:43.55 ID:RZX9lPG9] 0と1のみでランダムに生成した文字列Sがある 長さは2<=S<=1000である 11001010110100011001011011111111111111000000000010111000000 同じ文字で連続した文字列の内、他の連続する文字列よりも一番長い文字列をMX 同じ文字で連続した文字列の内、ニ番目に短い文字列をMN としたときのMXとMNを求めよ 見当たらない場合はFALSEを出力しろ S=110001010100 MX=3 (000が一番長い) MN=2 (11または00が二番目に長い) S=111111 MX=3 (111111が一番長い) MN=FALSE (2番目に短いものが存在しない) S=10 MX=FALSE (1番長いのが存在しない) MX=FALSE (2番目に短いものが存在しない)
90 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 02:03:02.94 ID:YHDmkQBf] >>89 Haskell -- 一番長いのの条件がわからんが勝手に解釈した import Data.List main = mapM (print.p89) ["11001010110100011001011011111111111111000000000010111000000", "110001010100", "111111", "10"] p89 s = let r = nub.reverse.sort.map length$group s in (if 1<=length r then Just$r!!0 else Nothing, if 2<=length r then Just$r!!1 else Nothing) (Just 14,Just 10) (Just 3,Just 2) (Just 6,Nothing) (Just 1,Nothing)
91 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 05:24:03.32 ID:SflzpwZE] >>76 ttp://ideone.com/L5LGGN int main(){ return main();}
92 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 06:09:53.87 ID:SflzpwZE] >>78 ttp://ideone.com/UDYKYh ほぼC。二分探査だ。嘘は入れてない。
93 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 07:17:16.29 ID:SflzpwZE] >>89 ttp://ideone.com/53lyu1 ほぼC。適当に書いた。
94 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 07:31:55.79 ID:7Waj3RIN] >>89 J 0はFALSEとします 連続する文字列は2文字以上とします f=:2&{.@\:~@~.@(#~ 1&<)@((#;.1)~1,(}.~:}:)) f '110001010100' 3 2 f '111111' 6 0 f '10' 0 0 f '1110001' 3 0 f '11100011' 3 2
95 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 10:46:12.34 ID:Cu1iOogD] >>89 Python 他よりも一番長い(つまり唯一), (それを除いて)ニ番目に短い と解釈しました。 import re def f(S): d = dict() for m in re.finditer(r"(.)\1*", S): l,s = len(m.group()),m.group() if not d.has_key(l): d[l] = [] d[l].append(s) M = list(sorted(d.keys())) MX = M.pop() if len(d[M[-1]]) == 1 else False MN = M[1] if len(M) >= 2 else False print "S={} => {}, {}".format(S,MX,MN) --- S=110001010100 => 3, 2 S=111111 => 6, False S=10 => False, False S=0011 => False, False S=00110 => False, 2 S=001100 => False, False S=0011000 => 3, False
96 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 16:33:11.25 ID:lmN8tiDJ] >>78 F# type answer = Eq | Lt | Gt let tegima a q = if q = a then Eq elif q < a then Lt else Gt let inline ask one lo hi tegima = let rec ask' lo hi = if lo = hi then lo else let q = (lo + hi) / (one+one) match tegima q with | Eq -> q | Lt -> ask' (q+one) hi | Gt -> ask' lo (q-one) ask' lo hi let ask100 = ask 1. 0. 100. >> printfn "%f" ask100 <| tegima 42. // 42.0 ask100 <| tegima System.Math.PI // 3.141592654
97 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 19:00:02.66 ID:IeNBSGsI] >>89 例2,3を見ると繰り返し現れる文字列で一番長い物と 二番目の物って意味? それとも例2はたんに書き間違いで 2文字以上で1番長い物と2番目に長い物? 曖昧な仕様で後々実装後もめるパターンだなw。
98 名前:デフォルトの名無しさん mailto:sage [2014/09/28(日) 23:51:21.05 ID:AmQTaudV] >>89 Python 例示とは異なるが、純粋に一番長い連続と二番目に短い連続を取得と解釈(連続は2文字以上からで1文字のみは除外) あと、「FALSE」はNoneとさせてもらった 更にいうとリハビリがてらの超愚直コードなので広い心で見守っていただきたい・・・ def count_seq(str): cnt, mx, mn1, mn2 = 1, None, None, None str += 'X' for i in xrange(1, len(str)): if str[i - 1] == str[i]: cnt += 1 else: if cnt > 1 and (mx is None or cnt > mx): mx = cnt if cnt > 1 and (mn1 is None or cnt < mn1): mn1, mn2 = cnt, mn1 elif cnt > 1 and cnt > mn1 and (mn2 is None or cnt < mn2): mn2 = cnt cnt = 1 return (mx, mn2) map(count_seq, ('', '0', '1', '10', '111111', '110001010100', '11001010110100011001011011111111111111000000000010111000000')) →[(None, None), (None, None), (None, None), (None, None), (6, None), (3, 3), (14, 3)] map(count_seq, ('0011', '00110', '001100', '0011000')) →[(2, None), (2, None), (2, None), (3, 3)]
99 名前:片山博文MZ次期CEO ◆T6xkBnTXz7B0 mailto:sage [2014/09/28(日) 23:57:01.74 ID:uLb79luw] お題:穴ありbashをネットワークから探しだしてホストを列挙
100 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 00:30:40.77 ID:0K8mksjW] ここにはハッカーはいないのか
101 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 00:58:20.05 ID:LXjsJlBs] >>100 ハッカー様()の模範回答をご教授願うよw
102 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 02:08:03.92 ID:v6qiSvKu] もうこの脆弱性を使って成長するボットネットが有るらしいけど… まぁUAをアレにしたブラウザなりクローラなり使えばいいだけ。
103 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 10:54:40.10 ID:mrmYQHU+] >>89 Squeak Smalltalk | MXMN | MXMN := [:S | | runs MX MN | runs := (RunArray newFrom: S) runs copyWithout: 1. MX := runs ifEmpty: [false] ifNotEmpty: [runs max]. MN := (runs copyWithout: MX) ifEmpty: [false] ifNotEmpty: [:runs2 | runs2 max]. {MX. MN} ]. MXMN value: '110001010100'. "=> #(3 2) " MXMN value: '111111'. "=> #(6 false) " MXMN value: '10'. "=> #(false false) "
104 名前:山下雄介@上級者 ◆1Bax/hBUwKIJ mailto:sage [2014/09/29(月) 18:40:13.84 ID:TuwBUZ1N] トーナメント表を出力しろ N=参加人数(0<=N<=26の範囲で、2で割り切れる整数) +-o-+ |xxx| oxxxo xx+--o--+xx xx|xxxxx|xx +-o-+x+-o-+ |xxx|x|xxx| oxxxoxoxxxo
105 名前:山下雄介@上級者 ◆1Bax/hBUwKIJ mailto:sage [2014/09/29(月) 18:52:35.65 ID:TuwBUZ1N] こんなの13パターン予め作って出力しちゃえばいいんだから初心者でもマジで余裕でしょう