[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/23 04:50 / Filesize : 284 KB / Number-of Response : 1021
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part8



1 名前:デフォルトの名無しさん mailto:sageteoff [2015/10/07(水) 20:19:06.64 ID:c4LYwtKo.net]
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part7
peace.2ch.net/test/read.cgi/tech/1429195275/

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
runnable.com/
code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

2 名前:デフォルトの名無しさん mailto:sageteoff [2015/10/07(水) 20:19:59.95 ID:c4LYwtKo.net]
過去スレ
6 peace.2ch.net/test/read.cgi/tech/1418278634/
5 peace.2ch.net/test/read.cgi/tech/1411227287/
4 peace.2ch.net/test/read.cgi/tech/1402622093/
3 peace.2ch.net/test/read.cgi/tech/1390525149/
2 toro.2ch.net/test/read.cgi/tech/1357191974/
出されたお題をコーディングして罵られるスレ
toro.2ch.net/test/read.cgi/tech/1354393458/

3 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 20:27:26.50 ID:qc2rPE1F.net]
俺のチンコォ崇めてプログラミングスキルを磨け

チンコォグイーン!
imgur.com/TL0hKpS.jpg

4 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 20:53:39.49 ID:c4LYwtKo.net]
景気付けにどうぞ

お題:
(1)0〜9からなる文字列Sが与えられるので、Sの部分文字列の中で3の倍数が全部でいくつあるか求めよ。
(2)同様に、与えられたSの中に7の倍数が全部でいくつあるか求めよ。

例:
(1)30123 -> 7 (3の倍数は3,3,12,30,123,3012,30123の7つ)
(2)30123 -> 1 (7の倍数は301の1つ)

制約:
1≦Sの長さ≦5万

5 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 03:32:30.80 ID:OORjem1H.net]
>>4 Ja

6 名前:va
http://ideone.com/sPM7Ao
書いててよくわからんくなった…
ローカルで1000桁計算した結果がBigInteger使った場合と同じになるから多分あっていると思う
[]
[ここ壊れてます]

7 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:59:21.41 ID:6/TT9nGb.net]
>>4 C++

ideone.com/tZdCFL
テストデータは>>5さんのを頂きました。

8 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:37:13.10 ID:6YOPIK9g.net]
深谷優先探索の練習したいからだれか問題頂戴

9 名前:デフォルトの名無しさん [2015/10/08(木) 22:44:17.56 ID:7fMgdVUK.net]
深谷優先探索

10 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:44:50.73 ID:ODE72HFL.net]
>>7
閉路の迷路を自動生成して、ゴールを深さ優先探索で求めよ。
っていうのは?



11 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:38:09.02 ID:/28lT51i.net]
>>7
Prolog処理系の実装

12 名前:デフォルトの名無しさん [2015/10/09(金) 16:58:59.65 ID:Ei93KrvX.net]
これの思考ルーチン


マンカラ ( ボードゲーム ):無料Flashゲーム
www.sousakuba.com/flash-games/mancala.html

13 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 22:10:18.75 ID:cypHo82J.net]
>>4
Ruby
1000桁で10秒くらいかかるので5万桁は無理
ideone.com/ggVXBd

14 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:20:18.23 ID:cCGMMWjY.net]
前スレ >>971 Java
ttp://codepad.org/Mhip6Mpt
結果
stdin read
********************
**K*****************
**S*****************
**R*****************
**KK****************
**SS************K***
***RR**S*******S****
***K*K*K******RK****
***SS*SR*****KS*****
***R***S***KSR******
**KK***K**S*K*******
*S*S***KSRKS********
********K***********
*******S*K**********
*********S*********K
********SR*KSRKS**S*
*********K*******R**
*********SR*SKRSK***
***********S***S****
************K*******

15 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 12:15:41.56 ID:2ua4rw45.net]
>>4
Java
ttp://codepad.org/f0Rh8cj2

16 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 18:26:36.88 ID:oc4xuXaB.net]
>>4(2) Io
f := method(s,
 b := list(1, 3, 2, 6, 4, 5)
 c := 0
 n :=s size - 1
 for(i, 0, n,
  if(s at(i) - 48 != 0, 
   for(j, i, n,
    r := 0
    for(k, 0, j - i,
     r = r + (s at(j - k) - 48) * b at(k % 6)
    )
    if(r % 7 == 0, c = c + 1)
   )
  )
 )
 c 
)

Io> f("20151012")
==> 1
Io> f("1234567890"repeated(10))
==> 681

17 名前:デフォルトの名無しさん [2015/10/13(火) 14:13:50.33 ID:mv2XvxUt.net]
Jewels
8*8の盤面のすべてのマスに、
7種類の内のいずれかの宝石を、ランダムに置く

縦・横・斜めに3つ以上、同じ種類の宝石が並ぶと、
並んだ宝石は、すべて同時に消えるとき、
何個の宝石が消えたか?

上級編
上の条件で、宝石が消えたら、上にある宝石が下に落ちてきて、
また消える条件を満たせば、宝石は同時に消えるのを、
再帰的に繰り返すとき、(消える宝石が無くなるまで、)
何個の宝石が消えたか?

参考までに、マス目のタイプ。
番兵:-1、宝石なし:0、宝石1〜7

番兵を使うのなら、盤面10*10で考えて

18 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/10/13(火) 20:35:49.75 ID:DtroG4QR.net]
お題:与えられた未知の英単語から発音を推定して、発音記号を出力する。

19 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 20:41:13.94 ID:4/4DmQRL.net]
>>17
www.babelbible.net/lang/lang.cgi?mode=right&noframe=1&doc=en_sndx&lang=en
ヒントあげるので自作してください。

20 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 22:20:15.16 ID:9bQvUcqb.net]
冗長性の過分応分加減は絶妙



21 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 17:37:45.49 ID:G+M9VpQ5.net]
お題:1から100までの整数を1回ずつすべて使い適当な順に連結して
ひとつの大きな数とみなす。最小のものを求める。
1から10を使った場合は、10123456789が最小となる。

22 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 18:52:07.89 ID:Iqqc+OKD.net]
実用アプリの開発に熱がはいりだしたら
お題が頭に入らなくなった
俺もまだまだだな

23 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/10/14(水) 18:59:41.69 ID:O5xSO2EX.net]
>>20
>1から10を使った場合は、10123456789が最小となる。

10はどこ?

24 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 19:22:57.89 ID:tW8nHrv+.net]
先頭だろ

25 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 20:14:40.28 ID:ExdaGJT8.net]
最小:10010111213141516171819202122232425262728293031....99123456789
最大:99998979695949392919089888786...111087654321
????

26 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 20:16:42.00 ID:ExdaGJT8.net]
最大は明らかに間違いだた
99999897969594939291908988878685....111087654321100
ぢゃないかと...

27 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 20:49:13.09 ID:c4eYG1dl.net]
87の前に8を持ってきたほうがいい
76の前に7を持ってきたほうがいい

逆に末尾は10100のほうがいい

最小も先頭は1001011112となる

28 名前:デフォルトの名無しさん [2015/10/14(水) 21:15:32.59 ID:guvBL9Z6.net]
下がっててみにくい

29 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:51:06.92 ID:dkvYFzw9.net]
>>20
C++
ideone.com/1roFPZ

30 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 02:19:43.47 ID:MsEvcwqa.net]
最大
99998979695949392919089888878685848382818079787777675747372717069\
68676665564636261605958575655554535251504948474645444434241403938\
37363534333323130292827262524232222120191817161514131211110100
???



31 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 03:16:29.70 ID:Tp1SkuaU.net]
>>20
Ruby2.0
>>28と同じロジック
ideone.com/Qx4Yln

32 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 10:10:32.84 ID:/JO/MU8C.net]
>>20 Io
Range
f : method(n,
1 to(n) map(v, v asString) sortBy(block(i, j, (i .. j) < j .. i)) join
)

Io> f(20)
==> 1011112131415161718192023456789

33 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 16:17:59.88 ID:IAn5ASk+.net]
>>28
アルゴリズムにちょっと感心した

34 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 22:50:50.56 ID:vLvoWUco.net]
>>16
Java
ttp://codepad.org/xR5aj5qb
ちょっとアレンジw

35 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 13:39:40.63 ID:gWco8U62.net]
問題:たかし優先探索
スタートからゴールまで何通りのルートがあるか求めなさい
たかし君は傷つきやすいので"たか4ね"を避けて進まなければいけません
同じルートを2回以上進んではいけません

["スタート", "たか4ね","たかし","たかし","たかし"],
["たかし","たかし","たかし"],
["たかし","たかし","たかし","たかし", "たかし"],
["たかし","たか4ね","たかし"],
["たかし","たかし","ゴール"],

36 名前:デフォルトの名無しさん [2015/10/17(土) 22:59:10.98 ID:CuP1bx6x.net]
このスレなんで上げてもすぐに落ちるんだろ

37 名前:デフォルトの名無しさん mailto:sage [2015/10/18(日) 13:35:05.15 ID:VWt3JxRU.net]
C#で書くとこうなるかな>>20
無理矢理LINQを使った

ideone.com/8FBn7W

ここまでやるとアホみたいww

38 名前:デフォルトの名無しさん mailto:sage [2015/10/19(月) 00:57:02.23 ID:L9hia2RL.net]
お題
"3.1415926535"のような小数を表す文字列と小数点以下の桁数を指定する(0以上の)整数を入力し、2進数小数を表す文字列を出力
例えば
"5.5",3 の場合は
"101.100" を出力する
桁を丸めるときは切り捨てではなく0捨1入("5.5",0 の場合は"110"を出力する)

39 名前:デフォルトの名無しさん mailto:sage [2015/10/19(月) 14:16:57.22 ID:PGvR7XY7.net]
例えば有効数字が3桁の場合、元の実数を8倍して整数に丸めれば、
ほとんどの場合それがバイナリの並びになってるはずだが、全ての場合それで問題がないかどうか自信が持てんな。

40 名前:デフォルトの名無しさん mailto:sage [2015/10/19(月) 15:30:38.50 ID:3YrRpfpr.net]
>>37
ideone.com/39GbxB
C++。適当に実験してたらそれっぽくなった。
あってるかは保証しない。



41 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 16:11:00.46 ID:yLq/jjBd.net]
// お題:電卓を実装する
// 引数はボタン入力履歴で、戻り値は現在の表示
// ボタンは 0123456789-+*= のみ
"5" => "5"
"5+" => "5"
"5+3" => "3"
"5+3=" => "8"

"5*-3=" => "2" // 最後に入力した演算子が有効
"5-3+" => "2" // 途中結果を表示する
"5-3*2=" => "-1" // -+ よりも * が優先される

// 初期値は 0
"" => "0"
"-10=" => "-10"
"*10=" => "0"

"4+3=2=" => "2" // = の次に数値が入力された場合、途中結果は捨てる
"4+3=*2=" => "14" // * よりも = が優先される

// 実装例: https://ideone.com/h8Tjwc

42 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 16:21:09.13 ID:AVx5NpJt.net]
お題

HelloWorldの10文字の組み合わせで生成できる文字列はいくつあるか求めよ

HlleooWrld
HerllodWol
WelloorHd
....

条件
・先頭は大文字のHかWではじめなければならない
・文字列の最後は小文字で終わらなければならない

43 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 17:05:47.08 ID:uI3C5IMU.net]
>>41
ideone.com/xmC0Mq
C++。こんな感じかな。

44 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 17:53:28.85 ID:A1vNd6F7.net]
>>40 Python3
https://ideone.com/o0W21U
正規表現とeval()の力

45 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 18:10:16.38 ID:A1vNd6F7.net]
ボタン式卓上電卓の想定なら"5-3*2="は"4"の方がメジャーかもね

46 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 19:26:01.78 ID:9ZHSOSPI.net]
>>42
アウトHdrWl

47 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 19:27:34.86 ID:uI3C5IMU.net]
>>45
それはイデオンがタイムアウトしたので切れました。

48 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 19:56:10.00 ID:8Z4zyZfA.net]
>>41
Excel
=(2*FACT(9))/(FACT(3)*FACT(2))-(2*FACT(8))/(FACT(3)*FACT(2))

49 名前:デフォルトの名無しさん [2015/10/23(金) 00:43:46.13 ID:kMcaPJUG.net]
>>40
haskell
ideone.com/AVRHl6

50 名前:デフォルトの名無しさん [2015/10/25(日) 15:42:30.99 ID:NSF+fqy+.net]
暇つぶしにどうぞ。

お題: nは2以上の整数とする。相異なるn個の文字から1文字選び順に並べ、n文字の文字列を作る。
このとき、出来た文字列が回文となる確率を求めよ。ただし、同じ文字は何度も選んでも良い。

例) n = 2のとき
相異なる2個の文字から2文字の文字列を作る作り方は2^2 = 4通り。この中で回文となるのは2通り。
従って答えは 2/4 = 1/2

n = 10 のときはいくらか? 同様にn = 11の場合はどうか?



51 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 21:26:04.46 ID:q9jqp7eP.net]
1/pow(n,floor(n/2))

52 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 02:51:13.95 ID:X1tUuUC+.net]
>>49
ideone.com/sxblVg
C++。モンテカルロ〜〜〜。なのか?
あってるかは知りません。

53 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 02:52:48.94 ID:X1tUuUC+.net]
どっちかっていうと分布確立の問題だからどういう分布を望んでるかで結果変わりそうかな?
C++だったらディストリビュータ変えればいくらでもいじれる。

54 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 13:07:28.84 ID:C/77uVUj.net]
>>51
n = 10 の場合は正しいようですがn = 11の場合が違うようです。

確率分布は良く知りませんが、単純な確率の問題ですよ。
ヒント: 約分できるので分子は必ず1になります

55 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 17:30:44.42 ID:X1tUuUC+.net]
>>53
片方あってるんだったら、試行回数の問題だと思うのですが、
これ以上試行するとイデオンがタイムアウトするので無理です。
勇者の登場を待ちましょうか。

56 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 21:54:25.47 ID:zYgBhlkj.net]
回文なので前半が決まれば後半は1通りしか無い?
11^6 / 11^11 = 1 / 11^5 じゃね
nが偶数なら
1 / n ^ (n / 2)

57 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 22:14:13.46 ID:fLaXb4KYb]
なんで>>50がスルーされているんだ…と.scの方に書いてみる

58 名前:デフォルトの名無しさん [2015/10/26(月) 22:16:43.98 ID:DXNKihF1.net]
>>55
つまり>>50

59 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 02:10:42.88 ID:xGCQarhq.net]
方眼紙に均等に5×5=25個の点が打ってある。
ランダムに2点を決定して直線を複数作っていく。
(X=0〜4,Y=0〜4,のほうが解かりやすい?)
しかし、3本の直線の端を頂点として三角形になった場合はその3本は
削除されるとする。いきなり三角形が複数できた場合は任意の
1個だけの三角形の3本の直線が削除されるだけでよい。
とにかく3角形ができた場合は、直線3本しか削除されなくて良い。
また、例えば3本の直線
直線(0,0)(4,0)
直線(0,0)(2,0)
直線(2,0)(4,0)
は1本に見えるが、面積の無い3角形として3本の直線は削除されるとする。
(問題)
この場合、残る直線はどんなに回数を多くしても収束してしまうか?
またその数はどのくらいか?
また10×10の場合など色々変えてどのくらいに収束してしまうのか確認せよ。

60 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 08:30:08.61 ID:4Bw9gOvg.net]
>>58
2点を選んで(2,0)(2,0)を引いた場合、これを線分と認めるか無視するのか。
既に線分(0,0)(4,0)がある状態で(0,0)(4,0)を引いた場合、線分の重複を認めるのか無視するのか。



61 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 08:35:48.75 ID:D5hlxVUX.net]
消し方によって確率が変わりそうな気がするがそこらへんは大丈夫なん?

62 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 11:16:40.27 ID:nTHAaiUE.net]
>>58
何度読んでも何言ってるのかさっぱり分からん。
「いきなり三角形が複数」とか「とにかく三角形ができた場合」って何のことよ。

63 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 12:30:53.45 ID:GiyDMn1h.net]
>>59
それは長さが無いから線分としない。スキップ。
重複は認めるとしよう。
>>61
言い方が悪かった。同時に複数できたらってこと。
例えば、四角形ができていて、対角線が次にできたら
三角形は2個同時にできるけど、どちらか一方の三角形分の線分
3本を削除すればいいとういこと。また、例えばV字に何本も重複してて
1本追加で3角形が出来ても、重複分全部でなく、3本削除だけでいい。

64 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 19:12:54.11 ID:4Bw9gOvg.net]
>>58
適当に回したらこれくらいになった

線分の重複を無視する場合
5x5 38.748293
10x10 315.085106

線分の重複を認める場合
5x5 54.334077
10x10 365.470484

65 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 00:20:15.77 ID:TbBvWlSz.net]
>>62
解説ありがと
なるほど既存の多角形を切り取る場合場合があるわけかw

66 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 13:29:39.48 ID:P6AfRAxK.net]
予想だと、プログラムの問題もあるが、乱数発生の仕方の問題でもある。
コンピューターの用意した人口的に散りばめた乱数だとすぐに収束。
自然界に近い完璧に近い乱数を発生なら収束しないかも。

67 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 14:34:56.09 ID:GTtq7s5w.net]
メルセンヌ・ツイスタ使ったらどうよ

68 名前:デフォルトの名無しさん mailto:sage [2015/10/30(金) 23:29:17.08 ID:FmImj1NY.net]
みんなはこのスレだけじゃなくyukicoderとかでも出題してたりするの?

69 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 02:29:03.10 ID:izatGTy3.net]
>>58
ideone.com/H3y5iK
C++。作っては見たものの、品質は低い。ちょい自信ないな〜。
抜けがあったらごめん。

70 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 07:00:44.92 ID:VBv6nvKP.net]
5x5
https://paiza.io/projects/sAfl2ma6nkZHgBKSjhHWEA
52.87

10x10
https://paiza.io/projects/SUCBFmGQqvLsld23IOzgag
362.59



71 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 15:28:30.15 ID:79rh8PzW.net]
お題: お題aの仕様は3日後に変更されます。仕様変更時、最小限の変更で対応できるようにお題aを実装してください。

お題a:入力される「Hello, World!」を逆順にして出力する。
例:
in < Hello, World!
out > !dlroW ,olleH

72 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 15:43:46.90 ID:T2ZXoWbN.net]
>>58
5x5 100000回 10x10 10000回

C
ideone.com/QyoAsj C 44.3 229.7ms 5x5
ideone.com/y0VaSp C 381.3 441.5ms 10x10

C++移殖(tuple+vector)
ideone.com/qTrT0j C++ 41.5 426.3ms 5x5
ideone.com/WFYDCn C++ 351.2 972.4ms 10x10

結構変わるもんですね。

73 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 21:18:08.06 ID:izatGTy3.net]
>>70
ideone.com/fDO24p
C++。コードにして4行だから仕様変更かかったら全部書き直しても間に合う位だと思う。

74 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 21:22:41.58 ID:izatGTy3.net]
>>58
>>68のコードを1分くらい回してたら720くらいで増えなくなった。ちなみにCPUはスカイレーク。

75 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 00:24:00.79 ID:KHL3HLvQ.net]
>>70
C
ideone.com/SJqau8

76 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 01:26:03.69 ID:cJLCmHdm.net]
>>70
どう仕様変更されるのか分からないとどうしようもない
入力文字列はもちろん、逆順という仕様も変更されるだろうし
となると出来るだけ短く作るぐらいしかない。

#!/bin/sh
read a
echo "!dlroW ,olleH"

77 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 13:15:09.33 ID:rNKSig65.net]
>>70
Haskell
main = interact reverse

78 名前:デフォルトの名無しさん [2015/11/01(日) 15:34:04.71 ID:srdwxzCV.net]
お題: 2つの文字列を引数としてとり、その2つの文字列の類似度をあらわす値x
(0.0 ≦ x ≦ 1.0)を戻す関数fがあるとき、与えられた文字列のリストを
類似度が高い文字列がなるべく近くになるように整列する関数gを
作成してください。

(f "a" "a") => 1.0
(f "a" "b") => 0.0
(f "fukushima" "kyoto") => 0.0
(f "fukushima" "tokushima") => 0.7142857142857143
(f "fukushima" "tokyo") => 0.0
(f "kyoto" "tokushima") => 0.0
(f "kyoto" "tokyo") => 0.3333333333333333
(f "tokyo" "tokushima") => 0.2

(g '("fukushima" "kyoto" "tokushima" "tokyo") #'f)
=> ("fukushima" "tokushima" "tokyo" "kyoto")

79 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 17:54:16.22 ID:tjf5Il2M.net]
>>77
fもつくる必要がありますか?

80 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 18:18:40.16 ID:V0olVSh1.net]
gの要件曖昧過ぎw



81 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 19:57:17.19 ID:KHL3HLvQ.net]
>>77
Ruby
fは適当。
ideone.com/XPMHpO

82 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 21:25:08.29 ID:srdwxzCV.net]
>>78
fもお願いします。
ここでは、たとえばtrigramを考えていました。
もっとよい実装があればお願いします。

(defun trigram (s1 s2)
(flet ((decompose
(s)
(let* ((l (length s))
(n (if (>= l 3) (- l 3) 0))
(j (if (>= l 3) 3 l)))
(loop for i from 0 to n collect (substring s i (+ i j))))))
(let ((l1 (decompose s1))
(l2 (decompose s2)))
(let ((s1l2 (loop for i in l2 sum (funcall #'(lambda () (if (search i s1) 1 0)))))
(s2l1 (loop for i in l1 sum (funcall #'(lambda () (if (search i s2) 1 0))))))
(/ (+ s1l2 s2l1) (float (+ (length l1) (length l2))))))))

>>79
gは、たとえば『列の各要素間の類似度に比例し距離の二乗に反比例する値の総和が最大になるような列に整列する関数』を考えていました。
もっとよい実装があればお願いします。

83 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 02:30:55.48 ID:LjXD9Pi/.net]
>>77
ideone.com/p1w9Zs
ギブアップ。Trigramはうまく移植できたと思うけど、うーむ。
うまいリレーの作り方が思い浮かばなかった。
意外と難しいなぁ。

84 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 06:33:43.86 ID:+TdI2Qwj.net]
類似度の定義は無いから単純に文字位置で文字一致する文字数を長いほうの文字列文字数で割ったのを類似度にしてもいいんだよね
簡単さ!
あとは類似度でグラフの最小木っての作りゃいいんっしょ?

85 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 16:32:13.01 ID:+QiDphYI.net]
>>70の変更です。
お題a: 入力文字列(日本語含む)を逆順にして出力する。
入力される文字列は0 ~ 1024バイトの範囲。
例:
in < Hello, World!
out > !dlroW ,olleH
in < Hello, わーるど!
out > !どるーわ ,olleH

86 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 21:14:51.67 ID:LjXD9Pi/.net]
>>84
ideone.com/hLXAqt
C++。半分くらい書き換えた。C++はマルチバイトキツイ。

87 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 22:32:43.41 ID:fHTNy1N3.net]
>>84
#! ruby -Ku
a='Hello, わーるど!'
p a.reverse

88 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 11:13:37.98 ID:EjzY5wqb.net]
>>85
例外飛んどるよ

89 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 17:38:51.75 ID:tcH4gyT3.net]
>>87
GCCのろーけるがタコなんじゃないですか?
VCオンリーって書いてあるじゃないですか。

90 名前:デフォルトの名無しさん mailto:sage [2015/11/05(木) 16:28:22.05 ID:IhTKFi3p.net]
>>84
setlocale (LC_ALL, "ja.utf8");
std::cout << "ja.utf8->" << setlocale(LC_ALL, 0) << std::endl;
setlocale (LC_ALL, "utf8");
std::cout << "utf8->" << setlocale(LC_ALL, 0) << std::endl;
setlocale (LC_ALL, "ja_JP.UTF-8");
std::cout << "ja_JP.UTF-8->" << setlocale(LC_ALL, 0) << std::endl;
setlocale (LC_ALL, "ja_JP.utf8");
std::cout << "ja_JP.utf8->" << setlocale(LC_ALL, 0) << std::endl;
setlocale (LC_ALL, "japanese");
std::cout << "japanese->" << setlocale(LC_ALL, 0) << std::endl;
setlocale (LC_ALL, "JPN");
std::cout << "JPN->" << setlocale(LC_ALL, 0) << std::endl;
setlocale (LC_ALL, "UTF-8");
std::cout << "UTF-8->" << setlocale(LC_ALL, 0) << std::endl;
setlocale (LC_ALL, "japanese.sjis");
std::cout << "japanese.sjis->" << setlocale(LC_ALL, 0) << std::endl;
結果:
ja.utf8->C
utf8->C
ja_JP.UTF-8->C
ja_JP.utf8->C
japanese->Japanese_Japan.932
JPN->Japanese_Japan.932
UTF-8->Japanese_Japan.932
japanese.sjis->Japanese_Japan.932



91 名前:デフォルトの名無しさん mailto:sage [2015/11/05(木) 16:32:51.81 ID:IhTKFi3p.net]
ターミナルをUTF-8にしてUTF-8のソースをコンパイル。
ターミナルをSJISにして実行。
結果:
!どるーわ wolleH

92 名前:デフォルトの名無しさん mailto:sage [2015/11/05(木) 20:59:19.34 ID:5zH1LNIS.net]
BrainF**kでやろうかと思ったがUTF-8めんどくせw

93 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/11/10(火) 17:59:02.39 ID:IWmBcu9t.net]
お題:粘菌のシミュレーション

94 名前:デフォルトの名無しさん mailto:sage [2015/11/10(火) 21:43:34.22 ID:0SseENg0.net]
頑張ってください!

95 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 01:05:44.32 ID:SL51g2Xb.net]
>>92 C++
こんな感じ?よくわからんけど
https://paiza.io/projects/39PM4p3agMPGdANgoHT0og

96 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 01:21:46.45 ID:NRLjC3dW.net]
粘菌ってWikipediaで調べただけでもたくさん種類あって種類によって全然違うしどいつをシュミレーションしろと?

97 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 17:27:12.29 ID:YwXMSyH6.net]
お題:自然数nで何乗しても結果の最後がnで終わるnを求める、

25^3 = 15626
25^5 = 9765625

98 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 21:11:00.20 ID:YwXMSyH6.net]
>>96
すみません
25^3 = 15625
でした

99 名前:デフォルトの名無しさん [2015/11/11(水) 21:37:45.64 ID:kvOX2kCa.net]
>>96 Java
https://ideone.com/tDxrjg

100 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 23:51:59.90 ID:kvOX2kCa.net]
>>96 Java
https://ideone.com/npEiYF
5と76から延ばす方向で



101 名前:デフォルトの名無しさん mailto:sage [2015/11/11(水) 23:55:55.86 ID:kvOX2kCa.net]
何で76にしたし…

102 名前:デフォルトの名無しさん mailto:sage [2015/11/12(木) 07:16:51.84 ID:TDqS/713.net]
>>96
https://ideone.com/3DYhOi
C++。アルゴリズムはあってると思うんだけど、浮動小数誤差でうまく数字が出てない気がする。
違う方法にすればよかったかなぁ・・・。Orz






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<284KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef