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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2019/11/17(日) 09:00:22.10 ID:xqEdXdr6.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/

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

※前スレ
プログラミングのお題スレ Part15
mevius.5ch.net/test/read.cgi/tech/1564310397/

528 名前:デフォルトの名無しさん [2019/12/31(火) 07:26:10.17 ID:kRQlhKMg.net]
制約論理型言語だと変数の上限下限を自動的に切ってくれる。

529 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 09:03:13.10 ID:hkax3Wzu.net]
お題
フィボナッチ数列のn番目をF(n)とした時
F(F(80))の下位8桁を求めよ

フィボナッチ数列は以下で定義される数列である
F(1)=1
F(2)=1
F(n)=F(n-2)+F(n-1)

530 名前:デフォルトの名無しさん [2019/12/31(火) 10:24:38.95 ID:NKLtpqnc.net]
>>514
21055810
あってるかな。
フィボナッチ数列は行列を使うアルゴリズムで

531 名前:O(log n)で計算できるもんね。外側の計算はmod100000000 で計算すればいい。 []
[ここ壊れてます]

532 名前:デフォルトの名無しさん [2019/12/31(火) 12:24:58.82 ID:5aZymNkm.net]
>>515
Rは整数が32ビットまでで桁あふれするから、Juliaで書く。

F = Int64[1 1; 1 0]
n = (F ^ 80)[1, 2]

P = Int64[1 0; 0 1]
R = F
while n > 0
  global r = n % 2
  global n = div(n, 2)
  if r > 0
    global P = P * R .% 100000000
  end
  global R = R * R .% 100000000
end
println(P[1, 2])

-- 実行結果 --
21055810

533 名前:デフォルトの名無しさん [2019/12/31(火) 12:26:30.15 ID:5aZymNkm.net]
>>515じゃなくて>>514だった。

534 名前:デフォルトの名無しさん [2019/12/31(火) 13:18:28.06 ID:5aZymNkm.net]
>>514
Rでも多桁計算パッケージgmpを使ったら、正しく計算できた。
https://ideone.com/OY6Adr

535 名前:デフォルトの名無しさん [2019/12/31(火) 17:23:41.22 ID:NKLtpqnc.net]
>>514
>>516
515です。コード上げてなかった。
https://ideone.com/SPRgPf

536 名前:513 mailto:sage [2019/12/31(火) 18:46:25.67 ID:H+c+1UtF.net]
>>513
64ビットに収まるようにしたので簡単でしたかね

C++
https://ideone.com/VRdN4q



537 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 18:47:43.73 ID:H+c+1UtF.net]
>>514でした
すみません

538 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 19:45:18.11 ID:5fWgt8Ro.net]
>>449
https://ideone.com/nisdwQ
C++。問題勘違いして全探索かいたんだよ〜。
おわらねー。Orz

539 名前:デフォルトの名無しさん [2019/12/31(火) 20:25:50.73 ID:W8YPZd1D.net]
>>522
100億人に2020になる素数をプレゼント出来そうだ。

540 名前:デフォルトの名無しさん mailto:sage [2019/12/31(火) 20:58:55.61 ID:5fWgt8Ro.net]
>>523
100億!!???マジで??
そら手に余るわ。教えてくれてありがとう。

プレゼントするときは、「あなたに特別な2020を!」って感じか。

541 名前:デフォルトの名無しさん [2020/01/01(水) 07:48:09.89 ID:W9Zu1XGU.net]
>>523
素数2個の2020は41人しかあげられない。

542 名前: mailto:sage [2020/01/01(水) 12:10:34.36 ID:WIYGoppO.net]
あけおめ

543 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 12:56:41.11 ID:WIYGoppO.net]
お題

a^n + b^n + c^n = 2020
の整数解のうちnが最大の物を求めよ

544 名前: mailto:sage [2020/01/01(水) 15:06:53.67 ID:/JBKhr80.net]
あけおめ〜

545 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 15:29:53.46 ID:qVK/11PV.net]
A HAPPY NEW YEAR !!!

というコード。

546 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 04:45:53.28 ID:cCzcmPOa.net]
>>451



547 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 14:00:53.09 ID:2eGsq/cP.net]
(´;ω;`)

548 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 03:43:04.42 ID:ct9N0pK8.net]
お題

a^3 + b^3 + c^3 = 2020 * 2
の整数解を求めよ。

549 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 03:49:51.76 ID:ct9N0pK8.net]
追加

a^3 + b^3 + c^3 = 2020 / 2・2
の整数解を求めよ。

550 名前:デフォルトの名無しさん [2020/01/03(金) 03:54:35.20 ID:pVliia9g.net]
>>486
Kotlin
https://paiza.io/projects/5OHDudzLFUjSV6DAdxFcfw

こんなので良いの?単に掛け算して一致するか比較しているだけなんだけど。
オマケとして重複しないようにはしているが。

551 名前:デフォルトの名無しさん [2020/01/03(金) 04:17:21.42 ID:pVliia9g.net]
>>532
C
https://paiza.io/projects/vMRPBddVA6FgCl6AHaGXOw

どう?

552 名前:デフォルトの名無しさん [2020/01/03(金) 04:18:44.02 ID:pVliia9g.net]
>>533
最後の 2・2 の部分って何? 2.2? こっちで文字化けしてちゃんと表示されてないだけ?

553 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 09:45:42.54 ID:+RiBlMC+.net]
>>536
2020 / 2・2 = 2020 / 2 * 2 = 2020

554 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 12:48:37.25 ID:3k7MKqlh.net]
>>532
200万以下だと38通り
(並び替えも数えるとその6倍)

>>533
2020は解無し
1010は100万までには解は無い
505は100万までに18個

555 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 12:51:02.88 ID:3k7MKqlh.net]
>>527
n乗して64bitの範囲だとn=2しか発見出来なかった

556 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 20:05:33.33 ID:3k7MKqlh.net]
>>532
C
https://ideone.com/ctjDC0

38個見つけるのに1時間くらいかかりました
38個目 (1661082, 440694, -1671358)

こういうのはC/C++が得意でしょう
他の言語で出来ます? (挑戦)



557 名前:デフォルトの名無しさん [2020/01/04(土) 17:22:50.50 ID:HJ66bOYq.net]
お題
>>514に関連して、F(F(80))の桁数を求めよ。

計算式は簡単だが…

558 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 17:47:47.60 ID:6lKY6ugm.net]
over flow周りはあってるんだかわからん
https://i.imgur.com/PndnV6t.png

559 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 19:01:02.66 ID:hAlxX0tq.net]
Mathematica ?

560 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 20:28:18.17 ID:rMjoeVI8.net]
お題: 文字列を逆順にしてコピーするreverse関数を定義せよ(既存のライブラリを使ってはならない)

561 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 20:40:17.01 ID:YRTK1M0u.net]
>>544 Ruby

puts 'ABCDEF'.chars.then{|a| a.size.times.map{a.pop}}.join

# => FEDCBA

562 名前:デフォルトの名無しさん [2020/01/04(土) 20:46:16.21 ID:HJ66bOYq.net]
>>544 PowerShell

function reverse($s) {-join $s[-1..-$s.length]}
reverse 文字列を逆順にしてコピーするreverse関数を定義せよ

-- 実行結果 --
よせ義定を数関esreverるすーピコてしに順逆を列字文

563 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 21:12:58.70 ID:AqMdau2S.net]
>>544 Ruby
def reverse( s ); s.chars.inject(:prepend); end

564 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 21:13:39.03 ID:rMjoeVI8.net]
>>544 C
https://ideone.com/8mVMpf

565 名前:デフォルトの名無しさん [2020/01/04(土) 21:26:02.66 ID:e7dEja3I.net]
>>544
Java
https://paiza.io/projects/t01pm19B5qJfhk_bOyJXMQ

566 名前:デフォルトの名無しさん [2020/01/05(日) 00:51:01.04 ID:Y4p4/H36.net]
>>544
Kotlin
https://paiza.io/projects/RdcgXqdUDC52BTO0y9n1zw

Kotlin の String には reversed() という文字列順序逆転のための拡張関数が最初からあって紛らわしいので rev() という名前で自作した。



567 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 08:25:52.70 ID:h+ccWvVu.net]
>>532
 {a, b, c} = {-12, -4, 18} {-4, 2, 16} など
>>533
 {a, b, c} = {-6, -2, 9} {-2, 1, 8} など

568 名前:デフォルトの名無しさん [2020/01/05(日) 08:35:04.57 ID:OU8kozEP.net]
>>544 Ruby
def rev(s)
(1..s.size).map{|i|s[-i]}.join
end

569 名前:デフォルトの名無しさん [2020/01/05(日) 11:04:36.67 ID:Z8HxF2cT.net]
>>544 Common Lisp
https://ideone.com/cORf5W
https://ideone.com/NbfBax

570 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 15:25:24.03 ID:+tGOF19X.net]
>>544 Python
def reverse(s):
return s[::-1]

571 名前:デフォルトの名無しさん [2020/01/05(日) 16:01:41.83 ID:8nvrboOv.net]
>>540
こういうのを見ると我々は離散数学についてはほぼ無力と思う。

572 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 17:02:46.74 ID:x729cdax.net]
>>555
勉強しとけ

573 名前:デフォルトの名無しさん [2020/01/05(日) 21:49:56.17 ID:2Fq0AHrI.net]
>>544 R
https://ideone.com/mfvWPO

>>546のPowerShellと違って、U+10000以上の文字が含まれていても正しく逆順にできる。

574 名前:デフォルトの名無しさん [2020/01/05(日) 21:52:10.17 ID:2Fq0AHrI.net]
>>542
仮数部も指数部も間違っている。整数で1の位まで正確に求められるよ。

575 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:31:31.58 ID:h+ccWvVu.net]
>>540 サンクス

>>532 の解
{13, 11, 8}
{15, 9, -4}
{8, 1, -2} * 2
{9, -2, -6} * 2
{16, -6, -15} * 2
{74, -23, -73}
{43, -27, -39} * 2
{171, -75, -166}
{169, 64, -172} * 2
{516, 93, -517}
{414, 385, -504} * 2
{530, 337, -572}
{1098, 939, -1291}
{1290, 171, -1291}
{1626, -957, -1507}
{2251, -712, -2227}
{3107, -587, -3100}
{3299, 1018, -3331}
{3509, -2525, -3004}
{4022, -3163, -3221}
{2673, 1114, -2736} * 2
{13571, -9259, -11948}
{15291, -8419, -14388}
{10102, 674, -10103} * 2
{43943, 28524, -47631}
{23689, -3382, -23666} * 2 など。

576 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:41:01.23 ID:h+ccWvVu.net]
>>533 の解
{8, 1, -2}
{9, -2, -6}
{16, -6, -15}
{43, -27, -39}
{169, 64, -172}
{414, 385, -504}
{530, 337, -572}
{2673, 1114, -2736}
{10102, 674, -10103}
{23689, -3382, -23666}
 ・・・ ・・・
{830541, 220347, -835679} など。



577 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:48:30.69 ID:bLPoA6E7.net]
>>541
C++
https://ideone.com.VJk9QA

倍精度だと微妙に精度が足りないので
擬似4倍精度で計算してみた

4倍精度や多倍長が使える言語やライブラリを使えば一瞬で書けるんだけど

578 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 22:49:34.33 ID:bLPoA6E7.net]

https://ideone.com/VJk9QA
でした

579 名前:デフォルトの名無しさん [2020/01/05(日) 23:29:51.01 ID:2Fq0AHrI.net]
>>562
正解。

Rには多倍長浮動小数点パッケージRmpfrがあるので、120ビット精度での計算をさっと書ける。
多倍長整数パッケージgmpにはフィボナッチ数列の第n項を求める関数があるので、第80項を
自分で求める必要すらない。
https://ideone.com/VcxXIm

C/C++にもlong double型があるので楽勝!と思っていると罠に嵌まる。Visual C++では
long doubleは移植性(単にコンパイルが通るという意味で)のために定義されているだけで、
double精度しかないので使えない。GNU C++ではlong doubleが本当のlong doubleなので使える。
https://ideone.com/3puKYQ

これをVisual C++やGNU Cで実行すると、1の位が2大きい不正確な値が表示されてしまう。
https://ideone.com/Md5qZz

580 名前:デフォルトの名無しさん [2020/01/05(日) 23:41:09.00 ID:2Fq0AHrI.net]
GNU C++にも罠があって、https://ideone.com/3puKYQ はideoneでは結果が正しく
表示されているが、Windows版でコンパイルすると「-0桁」になってしまう。
printfの%Lf書式指定子が何故か正常に機能しないようなので、long longに変換して
%lld書式指定子を使う必要がある。

581 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 23:58:45.24 ID:Z3Lsb/Mg.net]
>>562は擬似4倍精度の四則演算やルートがコンパクトにまとまっており参考になるかと思います

logは手抜きですが

582 名前:デフォルトの名無しさん mailto:sage [2020/01/06(月) 00:24:13.90 ID:MKFPBGLf.net]
x87の80bit形式久々に聞いた
intelの失敗仕様

本当のlong doubleって言ったら128bitの事だと思う

583 名前:デフォルトの名無しさん [2020/01/07(火) 12:16:08 ID:lAASQTDH.net]
本当の?

584 名前:デフォルトの名無しさん [2020/01/07(火) 13:02:38.21 ID:PuPIfAOU.net]
大きさと精度が一致しないということでは。
例えば、16ビット整数の加算において255+1で桁あふれが発生するのは、勘弁してほしい。
16ビット整数であれば精度も16ビットあってほしい。

585 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 13:13:00.08 ID:4oL1Xwrc.net]
intelの拡張小数は箱も中身も80bitだぞ
隠れた1bitも隠さないから中身は79bitとも言えるかもしれないけど

586 名前:デフォルトの名無しさん [2020/01/07(火) 13:43:12.96 ID:PuPIfAOU.net]
GCCのlong doubleは128ビットあるから。



587 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 22:24:41.07 ID:Y9qs9jpB.net]
ひさびさにx87命令を使ってみた
masm形式なのでideoneでは動作しませんが
https://ideone.com/CdzenK

588 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 22:38:44.27 ID:Y9qs9jpB.net]
↑の出力結果

4893806799921043 (4893806799921042 + 0.855469)

丸める前の正確な値は
4893806799921042.8564973677594677....
なので小数第二位まで合っています
80bitでもギリギリって感じ

2進数だと
上位62bitまで正確、下位2bitが計算誤差
ということになります

589 名前:デフォルトの名無しさん mailto:sage [2020/01/07(火) 23:09:32 ID:Y9qs9jpB.net]
https://pc.watch.impress.co.jp/docs/article/toku0101/plan8.htm

590 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 17:55:41.24 ID:E2HYW9Z+.net]
お題
フィボナッチ数列のn番目をF(n)とした時
F(F(F(80)))の下位4桁を求めよ

フィボナッチ数列は以下で定義される数列である
F(1)=1
F(2)=1
F(n)=F(n-2)+F(n-1)

591 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 18:47:53.52 ID:bVQLyL/p.net]
フィフィフィボナッチ数列はお腹いっぱい

592 名前: mailto:sage [2020/01/08(水) 19:48:23.85 ID:npJkZznC.net]
>>571
x87 すごくいいです!私も 9801FA に i487SX をようやく搭載して準備完了です!

593 名前:デフォルトの名無しさん [2020/01/08(水) 20:00:11.84 ID:naqRCa+g.net]
お前は昭和何年からタイムスリップしてきたんだ

594 名前:デフォルトの名無しさん [2020/01/08(水) 20:33:31.36 ID:DEoUiUkq.net]
>>574
R
https://ideone.com/lpnhLq

595 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 21:16:17.44 ID:E2HYW9Z+.net]
正解

C++
https://ideone.com/iSMABZ

596 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 23:38:33.13 ID:3Vg9kR1l.net]
>>544 Perl5

use feature qw{say signatures};
sub reverse($s) {
 map {substr $s, -$_, 1} 1..length $s;
}
say &reverse('reverse');



597 名前:デフォルトの名無しさん mailto:sage [2020/01/10(金) 10:41:25.62 ID:lJ/gG0sx.net]
お題:自分用expm1()的なもの。底はe以外でも良い。不正な引数でのエラー処理は
考慮しなくても良い。

598 名前:デフォルトの名無しさん mailto:sage [2020/01/10(金) 13:20:18.79 ID:KXQq2+DU.net]
目的が高精度なのかSIMDなのか単に出題者が勉強したいだけなのか
もしかしてx87命令を使わせたい?

599 名前:デフォルトの名無しさん [2020/01/10(金) 20:53:23.97 ID:1usNcOvE.net]
>>581
expm1()って何?

600 名前:デフォルトの名無しさん mailto:age [2020/01/10(金) 21:01:53.36 ID:jjOShzcG.net]
エキスペディション・マグニチュードワンのことやろな

601 名前:581 mailto:sage [2020/01/10(金) 22:06:13.03 ID:lJ/gG0sx.net]
>>582
SIMDやx87命令は考えてませんでした。
四則演算とexpm1()以外のライブラリ関数は使用可って事で。
やっぱし無難にテイラー展開で求めるのが楽?

>>583
例えば
ttps://linuxjm.osdn.jp/html/LDP_man-pages/man3/expm1.3.html

602 名前:デフォルトの名無しさん mailto:sage [2020/01/10(金) 22:10:45.27 ID:lApN4p1F.net]
四則演算も使ったらダメなのかい

603 名前:581 mailto:sage [2020/01/10(金) 22:42:31.47 ID:lJ/gG0sx.net]
>>586
訂正:
四則演算と、「expm1()以外の」ライブラリ関数は使用可

604 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 06:32:12.11 ID:wIXPHQcF.net]
出題者が方法を知りたいだけだよね?
なら質問スレ/宿題スレの方が適切

605 名前:デフォルトの名無しさん [2020/01/11(土) 09:22:26.15 ID:R1f0qLP3.net]
お題
素数番目の素数をスーパー素数と言う。
スーパー素数の最初の100個を求める。

606 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 10:27:02.77 ID:LQrvWU7L.net]
>>589 Ruby 2.7.0

require 'Prime'
p Prime.take(100).then{|p| Prime.take(p.last).select.with_index{p.include?(-~_2)}}

# => [3, 5, 7, [中略], 3761, 3911]



607 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 10:31:32.27 ID:LQrvWU7L.net]
typo

# => [3, 5, 11, 17, 31, [中略], 3733, 3761, 3911]

608 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 10:52:09.93 ID:VG9fEjGe.net]
お題
5の倍数の素数を5の倍数素数という
5の倍数素数を全て求めよ

609 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 11:10:43.29 ID:V+Dyph4l.net]
5の倍数の素数ってどういうことですか?
文字通りの意味なら5だけだと思うんですけど

610 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 13:10:43.10 ID:JM9/51Sk.net]
>>544 Perl4

use feature qw{say signatures};
sub rev($s) {
 $s ne '' and substr ($s, -1, 1, '') . rev($s)
}
say rev('string

611 名前:');

てす
[]
[ここ壊れてます]

612 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 13:14:26.71 ID:JM9/51Sk.net]
>>594 Perl5 だった…orz
しかし、このソースの「substr (」のrと(の間のスペース文字を省くと
スレへの書き込みで
HTTP/1.1 403 Forbidden
が起きて書き込めなかったのは謎…

613 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 14:01:21.01 ID:M68szGrA.net]
>>592
echo 5

614 名前:デフォルトの名無しさん [2020/01/11(土) 20:08:39.02 ID:go77StkR.net]
お題
20200111の階乗を素因数分解したとき、すべての因数の積は20200111の階乗だが、
すべての因数の和は何か。

615 名前:デフォルトの名無しさん [2020/01/11(土) 20:55:04.41 ID:r5wulSj/.net]
ナベアツ理論か。

616 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 00:39:46.42 ID:PW2KE/yt.net]
>>595
書き込めないコマンドは、一杯ある。
「ls −l」とか

5ch は、特定の命令によって、表示の見た目を変えることができるから、
単に、表示する文字列に変換するだけじゃなくて、

投稿されたテキストから、命令を抽出したりしているから、
バグりそうなテキストを排除しているのだろう



617 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 10:30:24.93 ID:Cuf7XVQy.net]
>>597
C++
https://ideone.com/30RQZF

618 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 16:28:53.41 ID:Svv4a/Ag.net]
お題: バイナリ―サーチを実装せよ(自分の記憶だけで書かなければならない)

619 名前:デフォルトの名無しさん [2020/01/12(日) 16:52:57.01 ID:qRMFtMw7.net]
>>601
Java
https://paiza.io/projects/y4RxMakkRM6x88qm5GGMvA

620 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 17:33:54.06 ID:kqg5PnqA.net]
>>601 Ruby

def bs(ary, &cond)
  return ary[0] && cond.call(ary[0]) ? ary[0] : ary[1] && cond.call(ary[1]) ? ary[1] : nil if ary.size < 3
  mid = ary.size / 2
  bs(ary[cond.call(ary[mid]) ? 0..mid : mid + 1..-1], &cond)
end

p bs([1,3,5,7,9]){|i| i > 0} # => 1
p bs([1,3,5,7,9]){|i| i > 3} # => 5
p bs([1,3,5,7,9]){|i| i > 9} # => nil

621 名前: mailto:sage [2020/01/12(日) 17:39:35.02 ID:ZvwnN6DP.net]
>>601
C++
https://mevius.5ch.net/test/read.cgi/tech/1434079972/33
std::set<int> の再実装にて、内部にバイナリーサーチを含んでいます

622 名前: mailto:sage [2020/01/12(日) 17:41:03.57 ID:ZvwnN6DP.net]
>>601
>(自分の記憶だけで書かなければならない)
これは重要かつ役に立つ訓練のしかたですね、この前は pthread の mutex と cond が理解できているかどうかを、この縛りのもとにコードを書いて試みました

623 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 18:20:53.87 ID:Xff8C4Cf.net]
>(自分の記憶だけで書かなければならない)

お題は全てそういうものだと思ってたが
みんなカンニングして回答してるの?

624 名前:デフォルトの名無しさん [2020/01/12(日) 19:59:45.88 ID:qRMFtMw7.net]
お題1
10ビットの乱数を10個作成して
2進数に変換して出力してください
10ビットに満たない数は0埋めしてください

例)
1101101110
1000100011
0100111001
1110000001
1001001100
0010001111
1111001000
1010110111
1100001001
0100110111

お題2
縦方向、または、横方向に1が連続しているところを調べて
最も1が連続しているところの1の数を出力してください
ビット数や乱数の数が増えてもちょっぱやで処理できるとなお良いです

625 名前:デフォルトの名無しさん [2020/01/12(日) 20:38:11.83 ID:xWFTg64o.net]
>>600
正解。あなたには簡単すぎただろうが。

Rで書いた解答例はPCでは2秒台で実行できたのに、ideoneでは制限時間5秒以内に
終わらなかったので、C++で書いた方を貼る。https://ideone.com/DFDdtr
>>600とほぼ同じだが、掛け算が減る分だけ速いな。

626 名前:デフォルトの名無しさん [2020/01/12(日) 21:27:08.47 ID:xWFTg64o.net]
>>607
R
https://ideone.com/iTihQo



627 名前:デフォルトの名無しさん [2020/01/12(日) 21:44:57.86 ID:qRMFtMw7.net]
>>609
ありがとうございます、そして申し訳ないです

11
11
こうなってたら4と出力してほしくて
連続じゃないですね、隣接といえばよかったかもしれません

縦方向、横方向に1が隣接してる領域のうち最大の領域の1の数を出力して欲しいのです

628 名前:デフォルトの名無しさん [2020/01/12(日) 21:45:02.91 ID:xWFTg64o.net]
>>607
ビット数と乱数の数を別々に指定できるように訂正
https://ideone.com/cYMlMO






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

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

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