[表示 : 全て 最新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/

446 名前:だと思うが…

$uri = 'https://www.google.com/search?client=firefox-b-e&q=%E8%9F%BB%E4%BA%BA%E9%96%93+%E3%83%8F%E3%82%B2';
use URI::Split qw(uri_split uri_join);
@a = uri_split($uri);
$a[1] = 'jump.5ch.net';
$a[2] = '/';
$a[3] = $uri;
print uri_join(@a), "\n";
[]
[ここ壊れてます]

447 名前:デフォルトの名無しさん [2021/11/12(金) 20:37:34.22 ID:Y4pYQLN1.net]
”2021”というフォルダがある
"2020"というフォルダもある
 :
"1950"というフォルダもある
そしてそれぞれに"01"〜"12"のサブフォルダがあって
そしてそのそれぞれに"01"〜"31"というサブフォルダがあって
更に"00"〜"23"という・・・・

つまり、1時間ごとのフォルダがあって
そこには多くのファイルが詰まっている

そのファイルのタイムスタンプに変化があったら
「どこのファイルが書き換えられたぞ」と検出するプログラムを作りたい
片っ端からタイムスタンプを調べるしかないのか
これはファイルシステムの問題でしょうが
なんとか、前回調べてから変化があったか、短時間で検出できる方法はありませんか

ファイルに変化があったら、フォルダのタイムスタンプを変えてくれればいいんだけどね

448 名前:デフォルトの名無しさん [2021/11/12(金) 21:45:17.50 ID:gsBkkV8P.net]
そういう検出機能はOSかハードウェアかについてなかったか 忘れたが

449 名前:デフォルトの名無しさん [2021/11/12(金) 21:49:29.72 ID:gsBkkV8P.net]
NTFSの USN とは?
USN ジャーナルとは
NTFSのUSN機能とはNTFSボリュームに対しての変更の記録です。
Cドライブ、Dドライブ、Eドライブごとなど、ドライブごとに加えられた変更を記録したものです。

USNとはUpdate Sequence Number Journalの略称です。
主に以下の目的で使用されます。
・FRS(File Replication Service)によるファイル複製時の差分洗い出し。
・スナップショットバックアップ時の差分洗い出し。
・ウィルス対策ソフトによるファイル検査。
・インデックスサービス向け。

tooljp.com/qa/what-is-USN-36BE.html

450 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 22:31:42.38 ID:M7lyd7nj.net]
Ruby では、文字列の中から、URL を抜き出す関数が非推奨になった。
頻繁に規格が変わるからかな?

正規表現でも多分、何万行も掛かる。
作るのに10年ぐらい掛かるので、誰も作らない

今あるものでも、正しく判定されるかどうか、分からない

451 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 22:39:57.54 ID:M7lyd7nj.net]
>>430
5ch のバグで、

そのURL をプログラム板全体で見た時は、&q とつながっているのに、

個別のスレッドで見ると、&;q と、&の直後に、;が入って、
リンクが&までになってしまう

452 名前:デフォルトの名無しさん [2021/11/13(土) 02:42:42.42 ID:p75HzwR9.net]
>>433
ドライブごとに加えられた変更がログに保存されているとは知りませんでした
データドライブに分けているので、ログから探すのも速いかもしれません
ありがとうございました

453 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 00:16:09.47 ID:Xr7xQZWT.net]
お題: JSON形式のテキストをXML形式のテキストに変換しなさい

454 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 21:06:19.54 ID:L/+dWr8R.net]
>>437 C++
https://ideone.com/vkSCmj



455 名前:デフォルトの名無しさん [2021/11/23(火) 21:56:09.59 ID:WrxNeBf5.net]
age

456 名前:デフォルトの名無しさん mailto:sage [2021/11/24 ]
[ここ壊れてます]

457 名前:(水) 11:45:59.40 ID:kXzWnsgO.net mailto: ideone って boost は include 出来るのか
codepad はずっと落ちてるな
[]
[ここ壊れてます]

458 名前:ハノン mailto:sage [2021/11/24(水) 20:41:27.64 ID:CmhCtKru.net]
>>440
もう codepad はおしまい、codepad にアップした私のコードも永遠に失われました…

459 名前:96 mailto:sage [2021/12/02(木) 04:03:51.64 ID:EE6BdDDo.net]
元のソースをローカルに保存しておかなかったのか

460 名前:デフォルトの名無しさん [2021/12/02(木) 12:54:02.17 ID:adrEDszf.net]
短いもんだから直接打ち込んじゃったんじゃないかな。
そして消滅。

461 名前:デフォルトの名無しさん mailto:sage [2021/12/02(木) 16:48:13.78 ID:BMPRSKoA.net]
>>442
デスクトップで書いたものはローカルのどこかに残っている(と思う)
ノートで書いたものはノートPCごとどこかにいってしまった…
いや、まあ、最初から書き捨てでしたけど、惜しいと思うものも多少ありますね

462 名前:96 mailto:sage [2021/12/02(木) 21:30:16.60 ID:m0u4nXXp.net]
いま
codepad.org/
復活してない?

サンプルURLとして前々スレの過去の回答

プログラミングのお題スレ Part18
mevius.5ch.net/test/read.cgi/tech/1594702426/174
>174 名前:デフォルトの名無しさん[] 投稿日:2020/08/04(火) 19:24:17.96 ID:lImhU2CT
> >>173
> あーアホだったw
> タブ消去の仕様だとPythonだと分けわからんことになるなw
> ↓貼り直した
> codepad.org/BWRzr8fW
> ※会員未登録の為、一定期間後に自動消去

も表示されたし。

保持しておきたいcodeがあれば今のうちにsaveするか、
Internet archiveに記録しとくのも手だよ。

463 名前:デフォルトの名無しさん [2021/12/08(水) 14:07:00.92 ID:Bws6ftLO.net]
お題が出なくなったので全く実用性がないと思われる頭の体操的なやつを一つ。

お題: 与えられた数値の配列の 1 になっているビットをカウントする。

例えばC言語で unsigned char の配列とか使って、処理する関数はポインタで渡された所から何要素みたいに指定されるようにする。。

それで例えば 0xde, 0x96 (11011110, 10010110) なら答えは 10。

464 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 17:14:42.64 ID:vDqYU7cZ.net]
.replace("0", "").length



465 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 17:44:20.69 ID:/InaUbpT.net]
お題: 日付が与えられるので4月ならtrueを出力しなさい

< 2021/04/01
> true

< 04/01
> true

< 2021/04
> true

< 2021/05/01
> false

466 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 19:09:00.93 ID:nFeiLLyh.net]
>>446
最適なコードが環境に大きく依存するからなあ
シフトの速度とか専用命令有無とか

あまり良いお題じゃないし荒れそう

467 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 05:41:43.04 ID:8cQ3P39Q.net]
英式 1/4/2021
米式 4/1/2021

468 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 08:53:58.33 ID:FBbu4srV.net]
日 21/04/01
米 04/01/21
欧 01/04/21
年2桁で入り乱れたら更にわけわかめ

469 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 13:38:41.08 ID:ZoIDn0OR.net]
逆に、年2桁の時は、
その数値で年月日が特定できるか問題があった。

02 12 29 --> 12年02月29日 と 29年02月12日 の2通りがある
02 13 29 --> 13年02月29日はないので、29年02月13日のみ

470 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 13:44:59.59 ID:ZoIDn0OR.net]
>>452
特定できるかどうかだけならいいが……
反例を間違った 02 12 29 3通りある

471 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 14:42:16.44 ID:b/vm8aBu.net]
そういえば食品の賞味期限がど

472 名前:、読んだらいいか分からなかったことがあったなあ。

11/02/13

2013年2月11日なのか、それとも2013年11月2日なのか、まさか2011年2月13日だったりしたらどうしよう、みたいな。
普通に輸入されているものなら日本語ラベルがあるから分かるだろうけど、友達が現地のお土産屋で買ってきた
お菓子みたいなものだとそのまんまだったりする(まあ、アメリカかアメリカ以外かで考えればだいたいは大丈夫
なのかも知れないが)。
日本の元号みたいな独自年号まで使われているのが混在していたら余計に分からないよな。今の日本では
あまりないだろうけど昭和の頃はあったような気がするなあ。
[]
[ここ壊れてます]

473 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 22:53:27.33 ID:93rp7Kwc.net]
>>446 Ruby

p [0b1110, 0b1010111].reduce(0){|s, n| s + n.digits(2).count(1)}

# => 8

474 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 23:18:40.40 ID:2ghuDZG2.net]
>>446
https://ideone.com/qmIeDU



475 名前:デフォルトの名無しさん [2021/12/10(金) 00:33:54.80 ID:Uh57IFJZ.net]
>>446
C
https://paiza.io/projects/YQ8ORfELqUt1xkKqmysViQ

入力を配列に入れてからカウントさせている。(uint32_t 型の配列)
カウント部分は>>456に似てる。しかし最初に引くのは思いつかなかった。

476 名前:デフォルトの名無しさん [2021/12/10(金) 01:03:30.79 ID:Uh57IFJZ.net]
>>448
Perl
https://paiza.io/projects/o4VTdU_kK-S8T4G5HvkIRw

年月日順で年がある場合は必ず4桁でなければならない。
4だけでも4月に判定されるが、まあいいか。

477 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:12:55.36 ID:rDACCx1y.net]
>>446

Haskell

sumCntBits = id
. length
. filter odd
. ( >>= ( takeWhile ( /= 0 ) . iterate ( flip div 2 ) ) )

main = do
print $ sumCntBits [ 0xde, 0x96 ]
print $ sumCntBits [ 0x12345, 0x6789a,0xbcdef ]

----
10
32

478 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:47:37.10 ID:kARxTGM3.net]
>>446 rust
https://ideone.com/9yFeU3
fn main() {
let f = |a: &[u32]| a.iter().map(|n| n.count_ones()).sum::<u32>();
println!("{}", f(&[0xde, 0x96]));
}

479 名前:デフォルトの名無しさん [2021/12/11(土) 20:38:05.35 ID:LF8J+dNV.net]
>>446
Kotlin
https://paiza.io/projects/7hQyycMNf5nuV5HcBg6iQg

普通に作るのは出尽くした感があるのでちょっと変わったやり方にした。
入力から Int の List を作り、それを 1 ビットづつの Boolean のリスト(というか Iterator) にしてから true のみをカウントしている。

480 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 22:30:09.92 ID:LvGvT7a1.net]
>>446 octave
https://ideone.com/BNjv3I
f = @(a) sum(dec2bin(a)(:) - '0');
f([0xde 0x96])

481 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 17:40:23.45 ID:kbrFI/m0.net]
もうすぐ、2022年
[お題] 2022は"x3y1数"(造語)?

以下の二つを満たす正の整数を"x3y1数"と呼ぶ
・各桁の数値が、二種類のみの数字からなる
・上の二数の個数比は 3:1

 該当例:1112, 2212, 2022, 32222223, 999999999888
 ダメな例:2213(種類), 4444(種類), 33232(個数比), 0222(先頭ゼロ)

 整数A,Bが与えられる。A以上B以下の"x3y1数"はいくつあるか?
 制約: 0 < A <= B <= 10^18

1) 2923 3311 --> 8
  該当は [2999

482 名前:, 3000, 3033, 3111, 3133, 3222, 3233, 3303]
2) 2021 77977796 --> 2022
3) 3000 6666566566566555 --> ?
4) 999999999889 1000000000000110 --> ?
5) 1 1000000000000000000 --> ?

※実行時間:上の5問をクエリーとし全部を2秒程度
[]
[ここ壊れてます]

483 名前:デフォルトの名無しさん [2021/12/16(木) 03:59:00.84 ID:p3cQ7gqk.net]
お題:自分用double-double演算ライブラリ
最低限、通常のdoubleとの相互変換は可能であること。それに加えて、
1)加減算
2)加減算 + 乗算
3)四則演算
数字が大きいもの程上級者向けです。

演算子のオーバーロードなどは任意とします。

484 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 07:13:07.04 ID:iDMhxZSI.net]
>>464
多倍長演算ライブラリ、のことですか?



485 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 07:37:15.94 ID:I1MQqoQo.net]
>>465
アホ

486 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 20:36:30.04 ID:teZIL57B.net]
>>463 c
https://ideone.com/SjWUYZ
・数字を数えて判定
・範囲内の全ての整数をチェック
・想像以上に遅くてダメだった

>>463 ruby
https://ideone.com/JYQPIF

487 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 20:39:48.12 ID:iDMhxZSI.net]
>>466
double の演算を自分で実装するという意味ですか?
sum(double, double)
diff(double, double)
mul(double, double)
div(double, double)
を自分で実装する、という話でいいですか?
あと double のフォーマットは IEEE754 でいいですか?

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以上の値の入力で多分うまく動かない。






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

前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