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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:02:57.84 ID:MQWrKSb7.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/

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

※前スレ
プログラミングのお題スレ Part19
https://mevius.5ch.net/test/read.cgi/tech/1606662245/

488 名前:デフォルトの名無しさん [2021/12/16(木) 20:57:05.50 ID:Y2CVy/MB.net]
問題が説明不足では?

489 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 21:53:18.15 ID:B45/3FnD.net]
お題: テキストを読み込みそれをクリスマスツリーにして出力しなさい
クリスマスツリーに見えれば形は自由とする

入力

本日は良いお日柄ですね

出力

___本
__日は
_良いお
日柄です
___ね

490 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 22:32:14.13 ID:iDMhxZSI.net]
>>470
文字コードは何を仮定すればいいのですか?

491 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 22:34:05.93 ID:B45/3FnD.net]
>>471
UTF-8
日本語の扱いが難しい言語では英語のみの対応も良しとする

492 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 00:19:35.20 ID:6Xap9yRK.net]
>>470 octave
https://ideone.com/RseGCJ

493 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 04:20:32.14 ID:QblDDO27.net]
二種類のみの数字からなり個数比は 3:1
引数の範囲は 1-10^18 = 1001-9999999999998888(16桁)
以下の範囲に限られる
1000-9998
1000 0001-9999 9988
1000 0000 0011-9999 9999 9888
1000 0000 0000 0111-9999 9999 9999 8888

「二種類のみの数字からなる」を計算式で判定する方法ある?

494 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 05:36:58.41 ID:5DT5Lvck.net]
1([\d&&[^1]])\1{2} 最上位桁が比1
111[\d&&[^1]],11[\d&&[^1]]1,1[\d&&[^1]]11 最上位桁が比3
一般化 (\d)(?!\1)(\d)\2{2}|(\d)\1{2}(?!\1)\d|(\d)\1(?!\1)\d\1|(\d)(?!\1)\d\1{2}
4桁ならこれでもいいけど8桁以上になると複雑化するし
地道に数えるより 4の倍数桁,数字2種,比率1:3 のルールで生成する方が速そう

495 名前:463 mailto:sage [2021/12/17(金) 16:22:06.93 ID:ssQAe3ef.net]
>>463
 https://ideone.com/xTDtME

 想定解は、事前に4,8,12,16桁の"x3y1"数を全列挙して作っておく。
 プログラミング的には、各言語の順列や組合せを使って、作れるだろう。
 (想定解例では組合せは2ベキとpopcountから作っている)

 「それは、全列挙数が小さいとわかっているからでは..?」に対して
 プログラムで出すのなら、雑に最も大きい16桁が4つあるとして計算
  10P2 * 16C4 * 4 < 70万 なので、全列挙可能
 まじめに計算すると 10P2 * (16C4 + 12C3 + 8C4 + 4C1) * 9 /10 = 167,832

 列挙済み

496 名前:ネらば、クエリー5件程度なら、16.7万*5 チェックで間に合う。
 ちゃんとやるなら、ソートして二分探索すれば、数千単位のクエリーに対応できる。
 (想定解例では後者でやっている)
[]
[ここ壊れてます]



497 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 20:17:58.00 ID:gjoWWzuf.net]
>>468
>>466

498 名前:467 mailto:sage [2021/12/17(金) 20:31:12.28 ID:llvCqHRj.net]
>>463 c
https://ideone.com/bmYThw
・Ruby版の移植
・組み合わせの列挙方法は丸パクリ
・Ralph William Gosper Jr. 氏に感謝

499 名前:デフォルトの名無しさん mailto:sage [2021/12/17(金) 23:34:29.99 ID:llvCqHRj.net]
>>463 c
https://ideone.com/oPUphG
>>478から若干の整理
・組み合わせ列挙用バッファ廃止

500 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 16:20:56.22 ID:b+l2srj7.net]
>>464 C++
https://ideone.com/tkSsy4

501 名前:464 mailto:sage [2021/12/18(土) 16:29:44.66 ID:ElKfLkKB.net]
>>465
惜しい

>>468
IEEE754の倍精度(binary64)を整数演算で実装するのではありません。
binary64を二つ使って、上位53ビットと下位53ビットとで106ビットの浮動小数に見立てたものが
double-double演算です。

Wikipediaの「四倍精度浮動小数点数」の項に少しだけ載ってますです。

502 名前:デフォルトの名無しさん mailto:sage [2021/12/18(土) 16:50:56.06 ID:XqEkP9jw.net]
> Wikipediaの「四倍精度浮動小数点数」の項に少しだけ載ってますです。
一般的な用語じゃないんだから初めからこれ書いとけよ

503 名前:465,468 mailto:sage [2021/12/19(日) 00:01:36.35 ID:eP9zS7VQ.net]
>>481
I see.

504 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 21:10:50.32 ID:wQiNAkF9.net]
>>448 octave
https://ideone.com/2NglYm

505 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 19:32:25.39 ID:FcpxpynD.net]
128ビットあるのに106ビットしか使わんの?
もったいなくね?

506 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 19:47:17.61 ID:1JACqwUF.net]
素人はだまってろ



507 名前:デフォルトの名無しさん mailto:sage [2021/12/21(火) 21:17:48.02 ID:cWMYIacO.net]
>>485
もったいなよ
ただ、既存のdouble計算リソースが使えるという利点がある

508 名前:デフォルトの名無しさん mailto:sage [2021/12/22(水) 04:27:38.39 ID:5fCeD7fV.net]
double-doubleはFMAがFMAとして役立つ数少ない用途だな
積和じゃなくて3個の和のfused命令も欲しくなる

509 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 07:32:47.64 ID:Xd/JFvMa.net]
お題: 1つの整数から規則性のある複数の整数を生成せよ
生成される整数は再現性がなければならない

510 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 07:37:01.70 ID:GwakKG68.net]
>>489

function f: Integer -> Integer{
return 0;
}

511 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 09:01:28.76 ID:S2rGJ6tV.net]
>>489 Ruby
def sequence( seed, number )
srand( seed )
Array.new( number ){ rand(100) }
end

p sequence( 123, 10 ) #=> [66, 92, 98, 17, 83, 57, 86, 97, 96, 47]
p sequence( 123, 10 ) #=> [66, 92, 98, 17, 83, 57, 86, 97, 96, 47]

512 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 19:26:32.49 ID:KAa76evj.net]
>>486 ocaml
https://ideone.com/NzF5f2
let f =
let rec fib = function
0 -> 0 | 1 -> 1 | n -> fib (n - 1) + fib (n - 2)
and aux acc = function
-1 -> acc | m -> aux (fib m :: acc) (m - 1)
in aux []

513 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 19:27:19.05 ID:KAa76evj.net]
>>489 ocaml
https://ideone.com/NzF5f2
let f =
let rec fib = function
0 -> 0 | 1 -> 1 | n -> fib (n - 1) + fib (n - 2)
and aux acc = function
-1 -> acc | m -> aux (fib m :: acc) (m - 1)
in aux []

514 名前:デフォルトの名無しさん [2021/12/24(金) 17:16:46.67 ID:Xt+LQVaD.net]
>>488
Juliaのhypot()でもFMA使ってますです

515 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 22:51:57.83 ID:Y/w+woHG.net]
>>494
ただ積と和を1命令にして高速化しただけの積和
の効果だけじゃなくて
融合(fused)の効果が効く用途の話

516 名前:デフォルトの名無しさん [2021/12/25(土) 03:52:36.33 ID:62MjaTIU.net]
>>489
Kotlin
https://paiza.io/projects/xmMY6y8BGb8zlhn5QEmKvQ

何も考えずにただ R



517 名前:andom 使っただけ。 []
[ここ壊れてます]

518 名前:デフォルトの名無しさん mailto:sage [2021/12/27(月) 20:25:00.12 ID:7ybeEGfH.net]
[お題] 平均が2022な素数数列

 5000以下のあい異なる素数で、加算平均がぴったり 2022 の数列を作る。
 数列の項数(要素数)を最大化する、最大はいくつか。
 最大数と数列を表示する。
 
※解答例(もちろん4以上がある)
 4
 [1747, 2099, 2113, 2129]
※実行時間は素数生成を含めて、4秒以内
 最大な数列は複数通りあると思うので、一例のみで

519 名前:デフォルトの名無しさん [2021/12/29(水) 15:58:08.20 ID:czxFIFL7.net]
答えは595個?
計算機+理詰めで595個っぽいけど

520 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 16:38:34.79 ID:cOaqDcVM.net]
「Log4j」2.17.0にもリモートコード実行の脆弱性

521 名前:497 mailto:sage [2021/12/29(水) 20:37:12.14 ID:GN7CzEgH.net]
>>497 c++
 https://ideone.com/UBbtWd

 "素数-2022"で適当に最大化DPすれば、合計0相当の所に答えが……。
 個人的には他の復元方法を見たかった。
 pythonは遅いのであきらめた(高速化方法を知らない)

>>498
595個でした。手作業でできるレベルなら……

522 名前:デフォルトの名無しさん [2021/12/29(水) 22:36:34.62 ID:d+UhR9Ru.net]
オレがやったのは
p[n]をn番目の素数、
P[n]をn番目までの素数の集合、
s[n]をP[n]の和
a=2022として
まず素数のn元集合で平均が1番小さくなるのはP[n]でその平均値s[n]/nは単調増加だからs[n]/n>aの時元数n以上の解はない
s[596]/596>aは計算機で確認
なので595元集合で解があればそれが最大
s[595]/595<aなのでP[595]はダメ
s[596]-595a = 1205525 - 1203090 = 2435は素数ではないのでP[597]から一個消すのはダメ
s[597]-595a = 1209898 - 1203090 = 6808 はp597=4373以下の素数2459,4349の和で表すことができる
よってP[597]\{2459,4349}の和は595aとなる
完全に全自動で探索するプログラムも作れそうだけど答え出たらもういいかなと手が止まってしまった

523 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 12:24:49.52 ID:sGmJGaqc.net]
何個取り除いたら平均2022にできるか考えると
確か74個だったけな?
JavaScriptで1秒もかかんなかったか

524 名前:502 mailto:sage [2021/12/30(木) 12:30:19.06 ID:sGmJGaqc.net]
表示時間除いたら1秒かかってないな
探索はほぼ一回でボトムまで到達して
発見された

525 名前:502 mailto:sage [2021/12/30(木) 12:38:50.05 ID:sGmJGaqc.net]
可能と不可能が極端に分かれている問題なので
事前のブランチカットだけが重要なヘンなお題w
>>352はまだ未解決

526 名前:デフォルトの名無しさん [2021/12/30(木) 20:10:02.90 ID:jVgYGZiS.net]
>>502
最大の個数を求めよやろ?



527 名前:デフォルトの名無しさん [2021/12/30(木) 20:24:56.63 ID:JL7tAErK.net]
千葉興業銀行、4月から副業解禁 県内地銀初

南都銀行、4月から行員の副業制度導入 ウェブ制作など

荘内銀、行員の副業・兼業解禁

フィデアHD、副業・兼業制度を導入

横浜銀行、10月から従業員の副業・兼業解禁

鹿児島銀、副業解禁を検討 九州FGと肥後銀は10月導入

肥後銀行が副業制度導入へ 多様な働き方認める 10月から

528 名前:デフォルトの名無しさん [2021/12/31(金) 15:04:12.13 ID:bqUePCKa.net]
>>497
haskell
https://ideone.com/GLMXRV
>>5

529 名前:01のアルゴリズムを自動化してみた
すげー簡単なところでどハマりして半日かかった
まだ解なしの場合とかの動作チェックとかしてないけどもうどうでもいい
[]
[ここ壊れてます]

530 名前:デフォルトの名無しさん [2021/12/31(金) 15:09:29.33 ID:bqUePCKa.net]
ちなみに出力形式は
(最大個数、最大素数の通し番号、最大素数までの間での素数で除外する素数のリスト)

try 67%5
→(5,8,[2,3,5])
は最初の個数8個[2,3,5,7,11,13,17,19]から[2,3,5]を抜いた[7,11,13,17,19]の5個が平均が67/5になる素数のリストの一つ
長さ
6以上はない

531 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 11:42:09.36 ID:B5P29Cqv.net]
お題:
xをゼロ以上の浮動小数点数として
2^floor(log2(x))
の計算。ただし、x == 0 の場合はゼロとする。

532 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 18:45:49.69 ID:qvdwzZse.net]
>>481
>binary64を二つ使って、上位53ビットと下位53ビットとで106ビットの浮動小数に見立てたものが
>double-double演算です。
現在検討中ですが、binary64 中には仮数部に使用できるビット幅は 52 bits しかありません。つまりケチビット表現です
53+53 とのことですが、実際には 53 + 52 = 105 しか格納できないのではないでしょうか?

533 名前:464 mailto:sage [2022/01/08(土) 21:07:22.52 ID:Xrz2Tlot.net]
>>510
上位の±1/2ulp相当が下位になります

534 名前:デフォルトの名無しさん [2022/01/09(日) 01:28:46.61 ID:/FHAAuzb.net]
>>509
perlでワンライナー。入力は標準入力からする。

perl -MPOSIX -ne 'chomp;$n=$_?2**floor(log($_)/log(2)):0;print "$n\n"'

でも、こんなので良いの?自分ではほとんど何も考えてないんだが。
(log2()がないからlog(n)/log(2)でやるって所ぐらいしか工夫がない)

535 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 07:56:15.63 ID:9G1CcY2f.net]
>>509 C++
環境+コンパイルオプション依存 little endian, double = 64bit, long double = 128bit

double fl2( double x )
{
*( (uint64_t*) &x ) &= 0xFFF0000000000000LLU;
return x;
}

long double fl2( long double x )
{
*( (__uint128_t*) &x ) &= *( (__uint128_t*)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF" );
return x;
}

536 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 07:59:19.16 ID:+WoQnCHD.net]
2進表記した時に先頭のビット以外を0にすればいいだけだがワンライナーで書ける気がしない



537 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 08:00:08.09 ID:+WoQnCHD.net]
先頭のビットというより「(存在するなら)0じゃない一番位の大きいビット」だな

538 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 08:27:45.00 ID:Gu7/igUi.net]
ビットいじる方法だと、非正規化数が0に、NaNが無限大になる
そういえば、無限大やNaNはどうすればいいのだろうか

539 名前:509 mailto:sage [2022/01/09(日) 09:16:00.82 ID:42F2CcU6.net]
Python
でかい値だとうまくいかないやつ

def foo(x):
_c = x * float(2 ** 52 + 1)
_xh = c - (c - x)
_if xh > x: return(xh * 0.5)
_return(xh)

>>516
深く考えてませんでしたw

540 名前:509 mailto:sage [2022/01/09(日) 09:53:47.91 ID:42F2CcU6.net]
>>512
log2(n)をlog(n)/log(2)で近似した際の「誤差」
(ぴったり整数値になって欲しいのにそれよりも数ulp小さい値になったとか、
数ulp大きくて、ぎりぎりfloor()で切り捨てられる筈の値が1大きくなったとか)
を補償するコードが欲しい。

541 名前:デフォルトの名無しさん [2022/01/09(日) 15:38:39.37 ID:DwVfG/qv.net]
そこは性能とトレードオフになるしかない気はする
例えばfloor( log 32 / log2 ) = 5が使用上の動作だけど
log 32/log2 =4.

542 名前:9999999999978 × 10^0が返されて答えが4になってしまうのを避けるならおそらく大きすぎる場合は無視していいから
res' = floor( log x / log2 )
if (2^res'* 1.5) < x
// (1.5倍でも届かないなら不当な丸め誤差が出たと判断)
then res = res' + 1
else res = res'
とかちょっと汚い書き方するしかない希ガス
[]
[ここ壊れてます]

543 名前:デフォルトの名無しさん [2022/01/09(日) 21:50:51.38 ID:sZC3oXej.net]
なんか変なこと書いた

res' = floor( log x / log2 )
if 2^res' < x
then res = res' + 1
else res = res'

やな
res'の算出で丸め誤差は-1までと仮定して補正する
しかしもちろんlog(x)とか2^nハード的にFPUとかで高速にやってくれてしかも整数演算は誤差なしでやってくれる前提
この辺は高級言語プログラマレベルの話でなんとかなるもんではない
やるならアセンブリ言語レベルでやるしかない

544 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 00:03:40.12 ID:gj6cLR2i.net]
>>509 C
https://ideone.com/5kDuzA
非正規化数、NaN、無限大とかはそのまま返すようにした
やり方は>>513と変わらない

545 名前:509 mailto:sage [2022/01/10(月) 00:53:57.15 ID:MGxmK4tZ.net]
いまどきのコンパイラなら、frexp()やldexp()をいい塩梅に最適化してくれるのだろうか?

from math import frexp, ldexp
def foo(x):
_m, e = frexp(x)
_if m == 0: return 0.0
_return ldexp(0.5, e)

546 名前:512 [2022/01/10(月) 01:47:47.54 ID:av6tewvz.net]
>>509
またPerlでワンライナー。

perl -ne 'chomp;if($_<=0){print"0\n"}else{for(my$i=0;;$i++){if((1<<$i)>$_){print 1<<($i-1),"\n";last}}}'

今度は計算している内容から考えて結果が同じになるようにした。浮動小数点演算をしていない。
また整数値が何ビットであるかも考慮しておらず、Perlの整数が32bitだった場合は2^32以上の値を入力されたら多分うまく動かない。
当然64bitだったら2^64以上の値の入力で多分うまく動かない。



547 名前:509 mailto:sage [2022/01/10(月) 02:23:50.20 ID:MGxmK4tZ.net]
>>522の修正
from math import frexp, ldexp
def foo(x): return 0.0 if x == 0 else ldexp(0.5, frexp(x)[1])

548 名前:デフォルトの名無しさん [2022/01/10(月) 03:27:40.49 ID:av6tewvz.net]
>>509
またまたPerlでワンライナー。

perl -MPOSIX -ne 'chomp;if($_==0.0){print"0\n"}else{print ldexp(0.5,(frexp($_))[1]),"\n"}'

これは>>524の真似(ていうかやってること同じ)。

549 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 12:43:53.01 ID:SgLm6fjp.net]
>>511
それは答えになっていないかと
質問を変えます。下位側の指数部も意味を持つようにインプリメントするべきでしょうか?

550 名前:464 mailto:sage [2022/01/11(火) 02:38:04.94 ID:i2HiBm5J.net]
>>526
先人の実装例だと、
上位 + 下位 = double doubleの数値
という事になってますね(上位側の指数が決まると、下位側の指数も決まる)。
tps://na-inet.jp/na/qd_ja.pdf

勿論、そう実装しないのもあり。

551 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 03:06:24.10 ID:Y9TTYX77.net]
>>527
となると、
>>510
>binary64 中には仮数部に使用できるビット幅は 52 bits しかありません

よって下位側指数部無視なら 53bit + 52 bit = 105bit の実装となりますが?
下位側指数部有意ならば、下位側にもケチビットを適用できますが、今度は仮数部が 106 ビットとはいいきれなくなりますね(数によって変わる)

552 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 03:08:13.70 ID:Y9TTYX77.net]
>>527
失礼 pdf が紹介されていることを見落としていました、精査します、紹介ありがとうございます

553 名前:デフォルトの名無しさん [2022/01/30(日) 18:02:46.10 ID:Np8aVX2s.net]
お題: 1より小さい実数を1以上2より下にせよ

< 0.123
> 1.23

< 0.0000123
> 1.23

554 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 18:25:00.85 ID:A8jov ]
[ここ壊れてます]

555 名前:ols.net mailto: >>530

x / 10^[log10(x)]
[]
[ここ壊れてます]

556 名前:蟻人間 mailto:sage [2022/01/30(日) 20:39:55.64 ID:DZg7owi9.net]
お題: 質量0.2 kgの直方体の物体が摩擦のある水平な床の上にある。
物体の初速を右向きの0.5 [m/s]とすると、物体は転倒することなく底面が床に接したまま、約x秒後に自然停止した。xより垂直抗力F[N]と動摩擦係数kを求めよ。
重力加速度を 9.8 [m/s^2]とする。



557 名前:蟻人間 mailto:sage [2022/01/30(日) 20:58:19.92 ID:DZg7owi9.net]
お題(HTML/JavaScript): ユーザがGoogleから訪問した場合は、3秒間ブラウザを停止させるようにせよ。

558 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 07:45:34.60 ID:/+irRzAS.net]
>>530
負の数や2以上の数は?

559 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 16:02:38.13 ID:zoPPBktH.net]
>>534
・・・!

560 名前:デフォルトの名無しさん [2022/02/01(火) 18:02:38.08 ID:zoPPBktH.net]
お題: -1 < n < 1 の実数nを-10 < m < 10の実数m(ただし1桁目が0を除く)に桁上げせよ(>>530の改良)

< 0.123
> 1.23

< -0.00056
> -5.6

561 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 20:01:29.11 ID:TQ6+L4kb.net]
負だったらabsolute取るだけのことじゃん

562 名前:デフォルトの名無しさん [2022/02/01(火) 23:48:43.79 ID:/+irRzAS.net]
>>536
perl

ワンライナー。以下はbashのコマンドラインから実行して試した。
入力は標準入力で一つづつ改行する。

perl -ne 'chomp;$n=$_;while(int(abs($n))<1){$n*=10}print "$n\n";'

やってることは見ての通り殆ど何も考えず10倍し続けるだけ。

563 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:49:01.62 ID:QCKFV9kK.net]
もうすぐ22日、今年は "22/2/22"といつもより多め
[お題] 偶数ゾロ目

URLのページに都道府県別の人口が載っている。
 URL: https://ideone.com/2w86hj
 今回使用するのは、2020/10のデータ

 同じ県は一回のみで、異なる県を 22 県選らぶ。
 (単純な選び方は全部で NCR(47, 22) = 約14.8兆通り)
 整数A,Bが与えられる(1<=A<=B<=1億)
 選択した22県の人口合計が A以上B以下となるのは何通りか?

1) 44444444 44444444 --> 214209
2) 22222222 44444444 --> ?
3) 44444444 66666666 --> ?

※上の三問を全部で5秒程度で
 想定解はあるが、もっとスマートな方法がありそう
 「またか」と思った人、以前の問題とは想定解はかなり違う

564 名前:デフォルトの名無しさん [2022/02/23(水) 19:08:44.10 ID:jKeAH0Dy.net]
>>536
やぱしn==0は除外?

565 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 00:35:12.16 ID:5B3hmiET.net]
>>540
一桁目が0は除外してね

566 名前:デフォルトの名無しさん [2022/02/24(木) 08:38:30.17 ID:GiducjAN.net]
難しい、こんなの小学生が解けるのか?

今年の中学受験の算数で一番の良問がこれらしい [976717553]
https://hayabusa9.5ch.net/test/read.cgi/news/1645558073/



567 名前:539 mailto:sage [2022/02/25(金) 17:25:00.82 ID:STd/IFZD.net]
>>539
旬だと思って出題

https://ideone.com/2w86hj 下部に追加

半分全列挙 + 尺取り法

早い言語でしかできない解答例でした

568 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:14:08.69 ID:RZ7O9d2K.net]
>>543

時間取れなくてやれてないが季節感あるネタ好き

569 名前:デフォルトの名無しさん [2022/02/26(土) 19:41:18.44 ID:4VT1Qgxn.net]
haskellでやったらやっぱり5秒はきつか

570 名前:チた []
[ここ壊れてます]

571 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 02:34:25.32 ID:VdMMR1Xg.net]
お題: RustかGoでバイナリーサーチを実装してください

572 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 12:30:16.47 ID:nN0Ys+dW.net]
お題: トライ木を使ってサジェスト機能を実装してください

$ prog
> w
world
would
will
wish

辞書は任意の大きさとする
入力は英語、または日本語とする

573 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:32:45.03 ID:Ycqbgo6j.net]
>>545
なんかHaskellってGHCのオプションに-O2とか指定すれば結構早くなった記憶がある
あとListじゃなくVector使うとか

574 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:41:12.56 ID:sy393qRd.net]
お題 バッタの大冒険
 a(1),a(2),⋯,a(n) を相異なる正の整数とし、M を n-1個の正の整数からなる集合と
する。また、M は s=a(1)+a(2)+⋯+a(n) を含まない。数直線の 0 の地点にいるバッタが
数直線の正の向きに n 回ジャンプする。 n 回のジャンプの距離は a(1),a(2),⋯,a(n) の並べ替えである。このとき並べ替えをうまく選べば、バッタがM の要素に対応するn-1点に一度も着地しないようにできることを証明せよ。

↑数学オリンピックの問題
もちろん証明はどうでもよろしい
お題は(ジャンプの幅のリスト、禁止点のリスト)から禁止点を交わしていく飛ぶ順を見つけるプログラムを実装せよです

入力
([3,5,8],[5,10])
出力
[8,5,3] #着地するのは8,13,16で禁止点5,10をかわしている

入力
([5,6,8,10,13,15],[2,18,24,29,45])
出力
[15,13,10,8,6,5] #着地するのは15,28,38,46,51で全ての禁止点をかわしている

入力
([3,26,30,32,36,44,53,62,68,82],[36,40,59,79,92,126,178,233,394])
出力
[82,68,62,53,44,36,32,30,26,3] #同文

575 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 21:13:54.18 ID:yn4DTgXG.net]
2番目の例着地するのは
15,28,38,46,52,57
ですた

576 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 20:44:30.68 ID:0IfoPmot.net]
>>549
は数学の問題としても面白いけどココはプログラムのお題スレなのでアルゴリズムそのもの考えるのは嫌な人のためにアルゴリズムひとつ紹介しておきます
以下の探索で線形オーダーで解を見つけられます
自分で考えたい人は無視してください

以下aを最大ジャンプとします
a=a(n)としておく

(A)一回目を最大ジャンプで飛んだとして最初の禁止点に届かないかギリギリ届くとき

一回目のジャンプが最大ジャンプしたと想定して残りのn-1回ジャンプで最初の禁止点を無視したn-2個の禁止点を交わしたジャンプ順b(1)...b(n-1)を作る
この順番でとんて行って最初に最初の禁止点をi回目に超えたとする
解のジャンプとして
b(1),b(2),...,b(i-1),a,b(i),...,b(n)
とすると全ての禁止点をかわしている

(B) 一回目を最大ジャンプで飛んだとすると最初の禁止点を超えて、しかも禁止点以外に着地できるとき

一回目のジャンプが最大ジャンプしたと想定して残りのn-1回ジャンプで最初の禁止点を無視したn-2個の禁止点を交わしたジャンプ順b(1)...b(n-1)を作る
解のジャンプとして
a,b(1),...,b(n-1)
とすると全ての禁止点をかわしている

(C) 一回目を最大ジャンプで飛んだとすると最初の禁止点を超えるが別の禁止点に着地してしまうとき

この状況だとa(1)〜a(n-1)のいずれかのジャンプa(i)でa(i)もa+a(i)のどちらも禁止点でないものが取れる( (∵) 全てのi:1〜n-1でa(i)かa+a(i)のどちらかが禁止点とするとこれだけでn-1個の禁止点全部尽くされてしまうけど、この中には最初の仮定である“一回目aで飛んだら禁止点”はこの中には出てこないので矛盾 )
それをa(n-1)としよう
最小の2回をa(n-1),a(n)と飛んだとしてこの時点で最初の禁止点と最初a(n)だと踏んでしまう禁止点の2点は超えているので残りの禁止点はn-3個以下しか残ってない
そこでa(1)〜a(n-2)



577 名前:をうまく並べ替えれば全部かわすことができる []
[ここ壊れてます]

578 名前:デフォルトの名無しさん [2022/05/03(火) 15:12:22.98 ID:FP7f4hyR.net]
問題がよくわからなくて解く以前の所で停止。そしてやる気消滅。

579 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 23:10:33.84 ID:JwGzWANE.net]
説明不足で申し訳ない
問題文は数オリの紹介サイトからそのままコピペしてきたのでわかりにくかったかもしれない

1番最初の例

([3,5,8],[5,10])

だとバッタは最初x=0の地点にいて+3,+5,+8のジャンプでx=16の地点に行こうとしている
しかしx=5,x=10の地点は着地禁止地点で着地できない
飛び方は全部で6通りあるがその中から禁止地点に着地しないものを選んで下さいという問題
3回くらいなら総当たりで答え出せるけどジャンプ10回禁止地点9ヶ所だと全数検索すると10!通り必要になって実用にならない
どうしますかというテーマだけどもちろん数学オリンピックの問題なので中々自分で答え出すのは難しい
でここは数学板ではないので同じ数オリサイトにあった解答を転記して「こんなアルゴリズムが知られているけどアルゴリズムをインプリメントできますか」がお題です

580 名前:デフォルトの名無しさん [2022/05/04(水) 00:16:07 ID:0lMETj8q.net]
お題: C/C++でスレッドセーフなstrtok関数を作れ
設計は各自で考えること

581 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 08:22:49.31 ID:WTZHV9SY.net]
政府公認のスカトロサークルだって!?じゅるり

582 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 02:33:11.33 ID:FeY8iOM4.net]
高度IT人材、富士通は最大年収3500万円へ

AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ

【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材

来年度から副業解禁 人材多様化へ―大同生命次期社長

第一生命HD、副業解禁 約1万5000人対象

第一生命HD、副業解禁 1万5000人対象―大手生保初

IHI、国内8000人の副業解禁 重厚長大企業も転機

IHI、社外兼業を解禁 社内副業もルール化

583 名前:デフォルトの名無しさん [2022/05/05(木) 16:49:02.33 ID:SGcHNlDo.net]
>>554
C言語

https://paiza.io/projects/xS5GP9DAU6KzhDsM6x7M6g

strtok_r() を strtok_r2() の名前にして自分で実装した。
strsep() も paiza.io のCのライブラリには何故かなかったので strsep2() にして自分で実装した。

584 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 08:28:38.45 ID:zQqHPRjb.net]
思い付きでお題考えてみた
検証してないんだけどどう?

お題: ランダムな部屋を移動する最短距離を求める

行列がある
任意の横幅Wと高さHで表現される部屋がランダムに1 <= N <= 5個生成される
この部屋を部屋内の座標からランダムに選択した別の部屋の部屋内の座標まで通路を作る
通路の要素は斜めには生成されず横と縦に生成される
通路はランダムに1つの部屋から0 <= R <= 3生成される

各部屋を各通路で繋げ任意の部屋Aと任意の部屋Bを選択する
このときAからBまでの最短経路を求めよ

585 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 10:03:08.65 ID:u3pPN9f9.net]
ランダムの部分いる?

586 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 19:40:13.01 ID:RtJ1FIjP.net]
日本語がよくわからんから数式で書いてくれ



587 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 19:57:58.11 ID:dPHs0KwZ.net]
数式だと答えになりそうだから図で書いてくれ

588 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 17:53:19 ID:UVEhLnaE.net]
さらに、閑古鳥をよびよせるか

[お題] 多倍






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

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

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