プログラミングのお題スレ Part16 at TECH
[2ch|▼Menu]
[前50を表示]
650:デフォルトの名無しさん
20/01/16 21:02:25 ZS18thyn.net
【お題】以下の31個の数の下6桁を求めよ。

20200101の1, 2, 3, ..., 20200101乗の総和
20200102の1, 2, 3, ..., 20200102乗の総和
20200103の1, 2, 3, ..., 20200103乗の総和
 :
20200131の1, 2, 3, ..., 20200131乗の総和

651:デフォルトの名無しさん
20/01/17 06:54:23.06 bFwt3c1k.net
>>626
逆行列の計算は避けた方がいいってえらいひとがゆってた
URLリンク(www.kyoritsu-pub.co.jp)

652:デフォルトの名無しさん
20/01/17 12:14:19.25 onsz9c/m.net
>>629
16, 7: 0 0 1 0 0 1 0 0 1
17, 9: 0 0 0 0 0 1 1 0 1
18, 26: 1 1 0 1 1 1 0 0 0
19, 27: 1 1 0 0 1 1 0 1 0
20, 31: 1 1 0 1 1 0 0 1 0

653:デフォルトの名無しさん
20/01/17 18:26:22.50 KcAYJrW8.net
>>632
C++
URLリンク(ideone.com)

654:デフォルトの名無しさん
20/01/17 20:33:32 VgNyCBhj.net
>>635
正解。

Rによる2種類の解答例
(1) URLリンク(ideone.com)
(2) URLリンク(ideone.com)

(1)は等比数列の総和の公式を利用しているので分かりやすいが、途中計算の最大値が
(20200130 * 1000000 - 1) ^ 2 ≒ 2 ^ 88.4 になるかも知れず、64ビット整数の
範囲に収まらないため、Cでは手軽に書けない。Rでは多倍長整数パッケージgmpを
使って書ける。

(2)は部分和をちまちま足していく方式で、途中計算の最大値が (1000000 - 1) ^ 2
≒ 2 ^ 39.9 で済むため、Cでも64ビット整数で計算できる。Rでも多倍長計算が必要な
(1)より速い (正味の実行時間が(1)は0.016秒、(2)は0.004秒)。

655:デフォルトの名無しさん
20/01/17 21:12:46 KcAYJrW8.net
お題

f(n) = n^1 + n^2 + ... + n^n の時
f^20200117 (20200117) の下9桁を求めよ

※ f^n (x) = f(f(f(....f(x)))...) 【fがn個】

656:デフォルトの名無しさん
20/01/18 00:45:25.84 meR2Lc88.net
>>629
Java
URLリンク(paiza.io)

657:デフォルトの名無しさん
20/01/18 05:21:08 et7QELfi.net
>>589 octave

a=primes(5000);
a(a(1:100))

658:デフォルトの名無しさん
20/01/18 22:25:47 uIn7pF9I.net
>>637
URLリンク(ideone.com)

Rでは時間が掛かりすぎるのでコンパイラ言語を使うが、C/C++だと出題者と同じで
つまらないから、Fortranで書いてみた。nが奇数の場合にしか求められないし、
合っているかどうか分からない。

659:デフォルトの名無しさん
20/01/18 23:02:35 /9q/+LXn.net
>>640
正解

C++
URLリンク(ideone.com)

312500はどうやって求めました?

660:デフォルトの名無しさん
20/01/18 23:12:37.20 /9q/+LXn.net
>>641だと偶数でもOKです

661:デフォルトの名無しさん
20/01/18 23:31:05.83 uIn7pF9I.net
>>641
時間は掛かるがRで下9桁の値を順々にいくつか求めて配列rに記録してから、
プロンプトで any(duplicated(r)) や which(duplicated(r)) と入力して
周期性を見つけただけ。理論的な根拠はない。

662:デフォルトの名無しさん
20/01/18 23:34:38.18 /9q/+LXn.net
thx
周期が既知なら
mod(20200117, 312500) 回だけで済むのでは?

663:デフォルトの名無しさん
20/01/18 23:45:49 uIn7pF9I.net
>>644
まあそうだが、それではあまりにもマジックナンバーすぎるので、周期が本当に
312500であるかチェックするコードを31行目に念のため入れた。周期性が
確認できなければ、STOP Errorと表示してプログラムを中断する。

664:デフォルトの名無しさん
20/01/19 00:38:02.65 msO9WicL.net
【お題】
無向グラフGが入力として与えられ、Gがサイクルを持てば、
Gの中の最小サイクルの経路とそのコストを出力するプログラムをかけ
*条件
・グラフサイズ(頂点数)は10頂点程度(任意でよい)
・各辺の重みはランダムとする
・入力は隣接行列表現とする

665:デフォルトの名無しさん
20/01/19 08:33:00.83 r8dbXOf2.net
お題: 文字列aの真ん中に文字列bを挿入する関数chopを定義しなさい

666:デフォルトの名無しさん
20/01/19 08:40:19 dOSa/ZjO.net
>>647 Ruby

def chop(str); str.tap{|s| s[s.size / 2, 0] = ?b}; end

puts chop('hogefuga') # => hogebfuga

667:デフォルトの名無しさん
20/01/19 08:42:44 dOSa/ZjO.net
問題誤読してた

def chop(a, b)
  a.tap{|s| s[s.size / 2, 0] = b}
end

puts chop('hogehoge', 'HOGE') # => hogeHOGEhoge

668:デフォルトの名無しさん
20/01/19 10:33:55 9NcxNk8h.net
お題 (>>346)
1〜1000 の整数の内、3の倍数または5の倍数であるものだけを選んで、その合計を求めよ。

669:デフォルトの名無しさん
20/01/19 10:37:40 9NcxNk8h.net
3の倍数
 [1000/3] = 333個
 S(3) = 3+6+9+・・・・+999 = 333 * (3+999)/2 = 166833,

5の倍数
 [1000/5] = 200個
 S(5) = 5+10+15+・・・・+1000 = 200 * (5+1000)/2 = 100500,

3の倍数かつ5の倍数 (15の倍数)
 [1000/15] = 66個
 S(15) = 15+30+45+・・・・+990 = 66


670: * (15+990)/2 = 33165, ∴ S(3) + S(5) - S(15) = 100500 + 166833 - 33165 = 234168.



671:デフォルトの名無しさん
20/01/19 13:04:07.51 CR4NZ4aH.net
15の倍数含めないんじゃないの?
URLリンク(paiza.io)

672:デフォルトの名無しさん
20/01/19 18:23:22 t01ujcAX.net
>>629 Perl5
use List::Util qw{max};
$W = 20;
$n = @wv = ([3, 5],[5, 6],[6, 3],[3, 5],[5, 9],[2, 1],[7, 5],[4, 6],[8, 3]);
@w = map{$$_[0]} @wv;
@v = map{$$_[1]} @wv;
$wt[$n][$_] = 0 for 0..$W;
for ($i = $n - 1; $i >= 0; $i--) {
 for $j (0..$W) {
  $ws = $wt[$i + 1][$j];
  $ws = max($wt[$i + 1][$j - $w[$i]] + $v[$i], $ws) if $j >= $w[$i];
  $wt[$i][$j] = $ws;
 }
}
print "価値合計最大: $wt[0][$W]\n";
$j = $W;
for $i (0..$n-1) {
 $ws = $wt[$i][$j];
 if ($wt[$i + 1][$j] != $ws) {
  print "[$w[$i], $v[$i]] ";
  $ws -= $v[$i];
  for (; 0 <= $j; $j--) { last if $wt[$i + 1][$j] == $ws; }
 }
}

$ perl 16_629_nsp_dp.pl
価値合計最大: 31
[3, 5]
[5, 6]
[3, 5]
[5, 9]
[4, 6]

673:デフォルトの名無しさん
20/01/19 20:22:32 MJwntUeD.net
>>652
PowerShellには論理XOR演算子があるので簡潔に書けるな。

(1..1000 |? {$_ % 3 -xor $_ % 5} | measure -sum).sum

-- 実行結果 --
201003

674:デフォルトの名無しさん
20/01/19 21:28:24 RfLx+x9F.net
>>652
なぜそう思った?

675:デフォルトの名無しさん
20/01/19 21:32:35 CR4NZ4aH.net
>>655
だけ と強調してたから15を含めない意図があったのかと思った

676:デフォルトの名無しさん
20/01/19 21:35:30 RrNuywTU.net
「3の倍数または5の倍数であるものだけ」という文言をそう理解するのは宇宙でお前だけだと思う

677:デフォルトの名無しさん
20/01/19 22:24:05 RfLx+x9F.net
妊娠してるか体が不自由な人だけ使ってください

678:デフォルトの名無しさん
20/01/19 23:13:47.04 xkwic4JQ.net
>>658
妊娠してる障害者はすわれないやんけ!

679:デフォルトの名無しさん
20/01/20 07:26:08 MadDRkAO.net
日本語の選択が排他的かどうかは状況しだいだから難しいところだと思うけどね
レストランで「コーヒーか紅茶が付きます」と言えばどちらか一方でしょ
ケースバイケース

こう解釈したらこういうプログラムになるというふうに思考を広げることはできるっしょ

680:デフォルトの名無しさん
20/01/20 08:18:28 ItoFGwWk.net
それは選ぶ条件ではなく、選ぶ個数の問題

>>346は全て選ぶのが暗黙の了解
>>660は選ぶのが1個であるのが暗黙の了解

>>346も全てとは書いてないから
1個選ぶのか、任意の個数選ぶのか、全ての選び方の場合を求めるのか、などが考えられるのかも
誤解の可能性があるなら「全て選ぶ」と書かないとね

681:デフォルトの名無しさん
20/01/20 10:07:25.78 DzK/Jy6Q.net
0個選んで答えは0
コンピュータ言語読み書きしてたらこういう
発想が自然に感じられるが
日常言語の世界ではナンセンス杉

682:デフォルトの名無しさん
20/01/20 14:10:00.56 gT/yNp+O.net
>651 のようにした
common lisp
(loop for i from 1 to 1000 when (= (* (mod i 3) (mod i 5)) 0) sum i)
234168

683:デフォルトの名無しさん
20/01/20 15:41:16.18 /G9h8LiI.net
>>651 Ruby
def si(n,m); n.step(m,n).inject(:+); end
p n3 = si( 3, 1000 ) #=> 166833
p n5 = si( 5, 1000 ) #=> 100500
p n15 = si( 15, 1000 ) #=> 33165
p n3 + n5 - 2 * n15 #=> 201003

684:デフォルトの名無しさん
20/01/20 21:4


685:6:25.06 ID:eV9B9Eib.net



686:デフォルトの名無しさん
20/01/20 22:42:22 vyZs8dgX.net
>>665
問題の条件によって適した解法が変わる。
たとえば個数が高々十数個程度であっても、
個々の重さや価値の範囲が広く、詰め込める荷物のキャパが大きいとか、
整数でない場合は、動的計画法だと解けないが、ナイーブな解法なら解ける。
逆に個数が大きくて、個々の重さや価値、キャパがそれほど大きくない整数だと、
ナイーブな解法では時間がかかりすぎて解けないが、
動的計画法だと短時間で解ける。
条件によって適した解法を選択する。
>>653 は動的計画法の復習と最適解に至る経路を逆にたどる復習のつもりで書いのよん。

687:デフォルトの名無しさん
20/01/20 23:01:52 kEPXORSp.net
問題に適した解法なら>>631が最強

688:デフォルトの名無しさん
20/01/20 23:10:30 vyZs8dgX.net
(´・ω・`)「・・・・・」

689:デフォルトの名無しさん
20/01/21 14:48:52 /dftakVp.net
>>650
Kotlin script

KotlinもBooleanのxor使えたよ。こういう場合は優先順位の問題で括弧が必要になるけどね。

println((1..1000).filter { (it % 3 == 0) xor (it % 5 == 0) }.sum())

690:デフォルトの名無しさん
20/01/21 16:44:59 TMO7rdDn.net
!=でいんじゃ、、、

691:デフォルトの名無しさん
20/01/21 21:56:37.25 q8k+mYw1.net
["A -> B" , "A -> D", "B -> E", "D -> E"]

A
B
E
D
E
このようにツリー状に表現する際に計算量が少ない書き出し方ってどうなりますか。言語問いません。

692:デフォルトの名無しさん
20/01/21 21:57:01.85 q8k+mYw1.net
スペースきえた…

693:デフォルトの名無しさん
20/01/21 21:58:36.68 5H3OckH4.net
D -> B のようなループできるかもね

694:デフォルトの名無しさん
20/01/22 03:28:09 HNO/xGn/.net
>>670
それを言っちゃあおしめえよ

695:デフォルトの名無しさん
20/01/22 10:29:09 Oj6zQLXh.net
>>671
データ構造がツリーじゃないのにツリー形式で表示するのは効率悪くない?

同じデータを何度も表示しちゃう

696:デフォルトの名無しさん
20/01/22 11:00:25 8VKZzbv1.net
>>671
dot

697:デフォルトの名無しさん
20/01/22 19:16:47 0ayd3B3Q.net
お題

>>671 において
入力文字列が20個以内で出力の行数が最大となる
入力文字列(を1個)を求めよ

698:デフォルトの名無しさん
20/01/22 19:50:15 k+w34kNu.net
["A -> B" , "B -> A]
これで循環参照のチェックいれるコードがない再帰っぽい感じなら無限に出力だ

699:デフォルトの名無しさん
20/01/22 19:55:17 F1N+c+gr.net
閉路と多重辺は無しで
辺の無い点も表現出来ないので無し

700:デフォルトの名無しさん
20/01/22 20:19:19 3jquT0bn.net
>>677
20個ならループしない限りは内容が何だろうが20行にしかならないのでは?

701:デフォルトの名無しさん
20/01/22 20:23:02 1i745hKi.net
最大は21行だよ

702:デフォルトの名無しさん
20/01/22 20:40:06 3jquT0bn.net
あー。そうか。21だね。

703:デフォルトの名無しさん
20/01/22 20:43:02 F1N+c+gr.net
>>671に "E -> C" を加えると?

704:デフォルトの名無しさん
20/01/22 21:13:37 pXdYyKNl.net
>>671
Java
URLリンク(paiza.io)

705:デフォルトの名無しさん
20/01/23 01:12:44 LqZxq9h8.net
>>683
分岐か。そうすれば増えるね。

706:デフォルトの名無しさん
20/01/23 18:13:14 AdSJ3UeH.net
[] 0行
["A -> B"] 2行
["A -> C", "B -> C"] 4行
["A -> D", "B -> D", "C -> D"] 6行
["A -> D", "B -> D", "C -> D", "D -> E"] 9行

707:デフォルトの名無しさん
20/01/23 18:45:00 AdSJ3UeH.net
n≧12 の時、以下を四捨五入した行数になるかな

偶数
4 * exp(n*0.24060591252980172375)

奇数
4.0137530980362538594 * exp(n*0.24060591252980172375)

708:デフォルトの名無しさん
20/01/24 23:55:14 qxZ+oily.net
>>671 Perl5 (goto 関数を使っていますが、perl5ではこれはcontinuationです)

use feature qw{current_sub signatures};
no warnings 'experimental::signatures';
@sx = (A => B, A => D, B => E, D => E);
sub {
 if (@_) {
  ($a, $b) = (shift, shift);
  push @lx, $a unless $h{$a};
  push @{$h{$a}}, $b;
  $r{$b}{$a} = 1;
  goto __SUB__;
 }
}->(@sx);
@ax = grep{! $r{$_}} @lx;
sub ($a, $d) {
 print "$d$a\n";
 __SUB__->($b, "_$d") while $b = shift @{$h{$a}};
}->($_, '') for @ax;

実行結果
$ perl 16_671.pl
A
_B
__E
_D
__E

709:デフォルトの名無しさん
20/01/25 02:34:16 XZtTnZKV.net
>>646
サンプルデータも考えて、回答も作れと言われると
めんどくさすぎてスルーされるんじゃまいか

710:デフォルトの名無しさん
20/01/25 02:36:37 XZtTnZKV.net
つか、無向グラフの最小サイクル検出って
いいアルゴリズムあったっけ

711:デフォルトの名無しさん
20/01/25 06:09:52 Fgzm1LAC.net
最小サイクルとは?
コストが最小?通る辺の数が最小?

コストとは?
通る辺の重みの和?
点のコストはゼロ?

出題者しかわからない前提が色々とあるお題

712:デフォルトの名無しさん
20/01/25 06:22:55 Fgzm1LAC.net
>>688
gotoを使っちゃいけないローカルルールとかあるの?

713:デフォルトの名無しさん
20/01/25 08:11:44 O6wUvbi6.net
tsort(1) ?

714:デフォルトの名無しさん
20/01/25 10:35:48 ZrgQFiPc.net
>>692
そんなルールはないけれど、制御構造の構文の代わりに安直に
goto分岐を使ったヘッポココードではなくて、perl5のgoto 関数名構文が持つ
continuationの機能を使って、動的環境を維持したまま末尾再帰的な
loopを表現したと言いたかったのよ

715:デフォルトの名無しさん
20/01/25 10:38:39 icKJvqvk.net
なるほど
お前はなかなかやるじゃねえか

716:デフォルトの名無しさん
20/01/25 11:05:32.17 mLh1vP4R.net
お題
.bash_history には、入力したコマンドが、1行ずつ追記されていくが、
同じコマンドが出てくると面倒なので、古い(上にある)方をすべて消してください
入力
5
3
1
4
2
5
3
4
5
出力
1
2
3
4
5

717:デフォルトの名無しさん
20/01/25 11:14:27.65 wxh/zNmo.net
>>696 Ruby
puts gets(p).split.reverse.uniq.reverse
# =>
1
2
3
4
5

718:デフォルトの名無しさん
20/01/25 12:48:36.66 dgvYVRBF.net
>>696
Java
URLリンク(paiza.io)

719:デフォルトの名無しさん
20/01/25 13:56:27.24 yjSryLut.net
>>696 Perl5
$h{$_} = $. while <>;
print for sort{$h{$a} <=> $h{$b}} keys %h;
実行結果
~ $ cat .bash_history
5
3
1
4
2
5
3
4
5
~ $ perl 16_696.pl .bash_history
1
2
3
4
5

720:デフォルトの名無しさん
20/01/25 18:59:55 xXb4DuHd.net
>>696
URLリンク(ideone.com)
RのuniqueにはfromLastオプションがあるので、revによる前後処理が不要。

721:デフォルトの名無しさん
20/01/25 19:19:17 i4ScOGkF.net
>>696 Ruby

a=STDIN.readlines
puts a.select.with_index{|v,i| i==a.rindex(v)}.join

722:デフォルトの名無しさん
20/01/25 19:26:44 eYyvJiZZ.net
>>696 .bashrc
HISTCONTROL=erasedups:ignorespace
ついでに
HISTIGNORE="history*"

723:デフォルトの名無しさん
20/01/25 20:22:19 J6xo1Vbp.net
>>696 Emacs Lisp
(with-temp-buffer-window #1="*odai-pt16-696*" nil nil
  (switch-to-buffer #1#)
  (insert-file-contents "~/.bash_history")
  (delete-duplicate-lines (point-min) (point-max) t))

724:デフォルトの名無しさん
20/01/26 00:01:21 4S7WZkam.net
>>701 ナイス

725:デフォルトの名無しさん
20/01/26 00:02:23 4S7WZkam.net
>>704 アンカーしくった
>>702 ナイスはこっちだた

726:696
20/01/26 00:35:54.22 2jcz6vHU.net
>>702
スレ違いで、スマンが、
erasedups で、現在の行と一致する履歴を、保存前にすべて削除するけど、
WSL, Ubuntu 18.04, bash では、削除されなかった!
これは難しい
tmuxとかの仮想端末で複数の画面間で、Bashのコマンド履歴を共有すると、
同じ履歴が何度も記録されてしまう問題を解決する
URLリンク(piro.sa)@kura.ne.jp/latest/blosxom/webtech/2018-03-04_history-nodup-with-tmux.htm

727:デフォルトの名無しさん
20/01/26 01:20:33.64 4S7WZkam.net
>>706
モチツケ

728:696
20/01/26 01:39:31.40 2jcz6vHU.net
history の仕組みが難しいから、
定期的に、ここのスクリプトで、履歴ファイルを上書きした方が良いかも

729:デフォルトの名無しさん
20/01/26 01:43:44.81 HPdacZve.net
rubyXLでエクセルいじってるが
印刷範囲を設定したいときは、どのようにすればよいのでしょうか?
いろいろ探しても見当たらず・・

730:デフォルトの名無しさん
20/01/26 02:08:32 4S7WZkam.net
>>709
スレチ

>>708
bashから.bash_profileの重複をなくすプログラムを実行しても
logoutするときにbashが記憶しているコマンド履歴を.bash_profileに
上書きしちゃって、元の木阿弥になるんジャマイカ

731:696
20/01/26 05:19:41 2jcz6vHU.net
>>710

>>706
のサイトに書いてあるけど、

.bash_history から重複を排除して、上書きする

次に、history -c && history -r

-c で、メモリ上のコマンド履歴を削除して、
-r で、履歴ファイルからメモリへ、コマンド履歴を読み込む

まだ、試してないけど

732:696
20/01/26 06:05:44 2jcz6vHU.net
>>696
Ruby で作った。
コマンドは「ruby script.rb 入力ファイル名」

# ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル
ary = ARGF.readlines # 1行ずつ配列に入れる

# ! が付く破壊的メソッドは、メソッドチェーンしない!
ary.reverse!
ary.uniq! # 連続していないものも削除する
ary.reverse! # 元に戻す

print ary.join

733:696
20/01/26 06:21:48 2jcz6vHU.net
>>711
の方


734:法で、.bash_history から重複を排除できました!



735:デフォルトの名無しさん
20/01/26 09:38:26 6CyPsFJq.net
お題: 入力された整数を因数分解し、因数の数だけ「どんだけぇ〜♪」と表示せよ

in < 24
因数分解: 2 2 2 3
out > どんだけぇ〜♪
どんだけぇ〜♪
どんだけぇ〜♪
どんだけぇ〜♪

736:デフォルトの名無しさん
20/01/26 10:24:47.39 mBsLdcGX.net
>>709
121 名前:デフォルトの名無しさん (ワッチョイ a763-gk0v)[] 投稿日:2020/01/25(土) 15:52:45.46 ID:WZ3Oswhu0
rubyXLでエクセルいじってるが
印刷範囲を設定したいときは、どのようにすればよいのでしょうか?
いろいろ探しても見当たらず・・

737:デフォルトの名無しさん
20/01/26 10:35:06.75 OyPCa8uu.net
>>714 Ruby
puts "どんだけぇ〜♪\n"*~-`factor`.split.size

738:デフォルトの名無しさん
20/01/26 11:45:57 pipfilQo.net
>>714
Java
URLリンク(paiza.io)

739:蟻人間
20/01/26 15:31:19.81 QR2U0M8L.net
お題: どこかの国に競馬があった。そこの競馬場のルールでは馬券一枚に対して単勝の馬一頭しか選べない。
その日の各ゲームのそれぞれの出場馬について、名前と勝率とオッズが掲示されている。
【今日の競馬】
ゲーム1:
馬A, 0.5, 2.0
馬B, 0.8, 1.2
馬C, 0.9, 0.2
ゲーム2:
馬D, 0.3, 4.0
馬E, 0.5, 3.0
馬F, 0.8, 1.4
予算50,000円で獲得期待金額が最大になるように馬券を購入せよ。馬券の購入において、小数点以下は切り捨てとし、馬券には税金が掛からないものと仮定する。

740:デフォルトの名無しさん
20/01/26 15:44:50.09 uQg9mh+n.net
勝率の和が1を越えてるけど勝率って言うのは勝つ確率のことではなくて何かしらの競馬用語なのか?

741:蟻人間 ◆T6xkBnTXz7B0
20/01/26 15:46:20 TOQ25Lx5.net
ここでは、払戻金の倍率(賭けた金が何倍になって払い戻されるか)のことをオッズと呼ぶことにする。払戻金は小数点以下切り捨てとする。

742:デフォルトの名無しさん
20/01/26 15:47:57 uQg9mh+n.net
てよく見たらいつもの糞コテやん
解散

743:蟻人間 ◆T6xkBnTXz7B0
20/01/26 15:55:46 QR2U0M8L.net
>>719
馬の勝率はこれまでのレースで一着になった確率。

744:デフォルトの名無しさん
20/01/26 16:14:00 jQnb27FW.net
勝つ確率がわからないなら期待値もわからない
普通は買わないのが一番

745:デフォルトの名無しさん
20/01/26 16:45:22.64 jQnb27FW.net
オッズ0.2って何?

746:デフォルトの名無しさん
20/01/26 17:18:30.67 aRFw4TjA.net
杜撰なお題だなw

747:蟻人間
20/01/26 17:19:13.36 QR2U0M8L.net
>>724
勝つと20%戻ってくるという意味。

748:デフォルトの名無しさん
20/01/26 17:23:34.39 uQg9mh+n.net
100円の馬券が当たるとなんと20円に!

749:デフォルトの名無しさん
20/01/26 18:27:58.48 jQnb27FW.net
>>718
ちゃんとしたお題にするつもりが無いなら取り下げて

750:蟻人間
20/01/26 18:40:41.46 TOQ25Lx5.net
>>718 >>728
取り下げます。もっと良いお題を考えて下さい。

751:デフォルトの名無しさん
20/01/26 18:56:39.39 OTxXTlwF.net
>>714
初心者です
JavaScriptです
let n = 24;
const factors = [];
for(let i=2;i<=Math.floor(n/2);i++){
if(n % i !== 0) continue;
for(;;) {
n /= i;
factors.push(i);
if(n % i !== 0) break;
}
}
for(let i=0; i<factors.length; i++) {
console.log('どんだけぇ〜♪')
}
って感じに書いたのですがどうも外側のループで i = 3 以上が実行されないらしく困っています
もしかしたら初学者の自分にもできるかもしれないと思い取り組んでみたのですが…
もしどなたかお知恵をお貸しくだされば嬉しいです

752:デフォルトの名無しさん
20/01/26 19:03:07.14 uQg9mh+n.net
>>730
for(let i=2;i<=Math.floor(n/2);i++){

const sup = Math.sqrt(n);
for(let i=2;i<=sup;i++){

753:デフォルトの名無しさん
20/01/26 19:09:59 OTxXTlwF.net
>>731
ありがとうございます!動きました
何かとんでもない思い違いをしていたみたいで恥ずかしい…

754:デフォルトの名無しさん
20/01/26 19:18:27 9QNAjmQu.net
n % i !== 0

755:デフォルトの名無しさん
20/01/26 19:23:55 pipfilQo.net
>>729
ビルの回数Nを引数として受け取って次の問題を解くプログラムを作ってください

N階建てのビルのある階から卵を落とします。
卵はある階よりも低ければ割れることはなく、ある階よりも高いと割れてしまう。
今、あなたは卵を2つ持っています。
卵が何階で割れるかを調べるもっとも効率のよい方法は何ですか?
そして、その方法で必要な卵を落とす回数は最大で何回ですか?

756:デフォルトの名無しさん
20/01/26 19:26:53 TCoNMy8F.net
2分探索じゃだめか?

757:デフォルトの名無しさん
20/01/26 19:40:43.12 yXTxN+fl.net
>>714
C++ イデオン揚げるの面倒なのでべた書きしておくわ。
半月ぶり位にコード書いたけど、やはり良いね。
#include <iostream>
#include <cstdint>
int main() {
std::uintmax_t N = 24;
while (std::cin >> N) {
for (std::uintmax_t i = 2; i <= N; i++) {
while (N % i == 0 && N != 0) {
N /= i;
std::cout <<i<< ":どんだけー。" << std::endl;
}
}
std::cout << std::endl;
}
return 0;
}

758:デフォルトの名無しさん
20/01/26 19:46:17 3yHBwxN6.net
>>734
効率
とは?

落とす回数の平均?
落とす回数の最大?
階を上がる回数の平均?
階を上がる回数の最大?
他?

759:デフォルトの名無しさん
20/01/26 19:50:34 3yHBwxN6.net
卵を使う個数

ってのもある
これだとリニア検索で1個使用でつまらん問題になるけど

760:デフォルトの名無しさん
20/01/26 20:01:47.72 vOa1pk8h.net
>>714
R
URLリンク(ideone.com)

761:デフォルトの名無しさん
20/01/26 20:15:04 yXTxN+fl.net
>>734
プログラミング言語・日本語でいうと、
2階から落としていって、割れるまで二階ずつ上っていく。
割れたら一階下りて割れるか確認する。
基本的にそれだけ。

762:デフォルトの名無しさん
20/01/26 20:16:59 pipfilQo.net
>>735
二分探索だとタマゴが割れて調べられないケースがでてくるんよー

763:デフォルトの名無しさん
20/01/26 20:22:08.04 OTxXTlwF.net
>>731さんの指摘も踏まえ>>730のコードを以下のように修正してみました
JavaScriptです、念のため…
let n = 24
const sup = Math.sqrt(n);
for(let i=2;i<=sup;i++) {
if(n % i !== 0) continue;
while(n % i === 0) {
n /= i;
console.log('どんだけぇ〜♪');
}
}
ここはこうした方がいい等あれば教えていただけると幸いです

764:デフォルトの名無しさん
20/01/26 20:28:47 3yHBwxN6.net
>>734
1階は必ず割れない
N階は必ず割れる
という設定とする

卵を落とす最大回数をa回とすると
N≦(a^2 + a + 4)*0.5
までは調べられる

765:デフォルトの名無しさん
20/01/26 20:30:52 yXTxN+fl.net
>>742
後学のために教えてほしいんだが、なんでnをsqrtしてsup作ってるんだい?

766:デフォルトの名無しさん
20/01/26 20:34:49 3yHBwxN6.net
>>742
n/= i
を実行する度にsupの値を減らせる

最後に残ったnが1じゃない場合
もう1回文字列を表示する必要がある

767:730
20/01/26 21:16:56 OTxXTlwF.net
>>744
そこは731さんの指摘のままに書いて深く考えていませんでしたが
745さんの言うようにsupの値を減らせるというところにヒントがありそうですね
再帰的?なやりかたになるのかな…うーんわからん

>>745
上については上述の通りまだわかりませんが
下は、小さい順にしらみつぶしで割れるだけ割っていっているのでおっしゃるような結果にはならないのではと考えるのですがどうでしょうか

768:デフォルトの名無しさん
20/01/26 21:23:54.19 pipfilQo.net
>>746
nに3とかを入れてみると最後の表示については確認できるかと
割り切れたときはiはそのまま
割り切れなかったらiを+1
ループでできるはず

769:730
20/01/26 21:28:27.08 OTxXTlwF.net
>>747
確認しました…>最後の表示
ちゃんと自分で調べないとダメですね
ちょっと直してみます

770:デフォルトの名無しさん
20/01/26 22:44:40.59 2jcz6vHU.net
>>734
このお題は、どこかで見た
VBScript のスレか何かで、ピッコロ大魔王が出したクイズじゃないの?w

771:デフォルトの名無しさん
20/01/26 22:55:24 2jcz6vHU.net
>>744
素数かどうかなど、素因数分解する際、平方根まで調べれば見つかるから

例えば、a, b が素数で、a < b の時、
a * b = 7 * 11 = 77 なら、√77 = 8.8 で、aは、9 以下で必ず見つかる

つまり、
平方根よりも小さいa * 平方根よりも大きいb = 77

772:蟻人間 ◆T6xkBnTXz7B0
20/01/26 23:02:50 QR2U0M8L.net
その辺は数学の整数論を参照あれ。

773:デフォルトの名無しさん
20/01/26 23:07:17 pipfilQo.net
>>749
ネタ元はグーグルの入社試験
ググったら解法もわかる
プログラムで解いてる人は少ないからプログラミング能力を測るのに適当かと

774:デフォルトの名無しさん
20/01/26 23:18:06 pipfilQo.net
お題
ある長方形の面積Sが与えられたとき
短い方の辺の長さが最も長くなるときの縦の長さと横の長さを出力してください

775:蟻人間
20/01/26 23:29:25.48 QR2U0M8L.net
>>753
=sqrt(S)

776:デフォルトの名無しさん
20/01/26 23:29:57.26 pipfilQo.net
>>751
掛け算の対称性は小学校の算数で習うので
整数論とかそんな難しい話は必要ないんじゃ……

777:デフォルトの名無しさん
20/01/26 23:40:40 pipfilQo.net
>>754
正解
素因数分解もそうだしグーグルの問題もそういうこと

778:デフォルトの名無しさん
20/01/27 00:03:50 0SHKI7y8.net
くだらなすぎる

779:デフォルトの名無しさん
20/01/27 06:18:43 rJ1Bl2Oz.net
>>714 Ruby

require 'prime'
n=24
Prime.prime_division(n).each{|_,k| puts ["どんだけぇ〜♪"]*k}

780:デフォルトの名無しさん
20/01/27 07:34:21 ZyjcNjD+.net
出題者には回答者からのお題の疑問には答えない主義なの?

「効率」とは何か聞かれてなかった?

781:デフォルトの名無しさん
20/01/27 08:27:54 ZyjcNjD+.net
パズル問題は曖昧性なく出題しようよ
解釈で全く違う問題になる

782:デフォルトの名無しさん
20/01/27 10:13:37 iRmt59/C.net
文章の読解も問題に含まれてるのでうざ絡みで答え教えてもらおうとするのは卑怯

783:デフォルトの名無しさん
20/01/27 10:22:09 7flpRMwp.net
それは問題が十分よくできているときにのみ有効な論であって、
例えば賭け事のオッズとして1未満の値を設定してくるような阿呆がいた場合にはそれ相応の質疑が必要

784:デフォルトの名無しさん
20/01/27 10:31:51 2EkFM6ia.net
>>761
この分野では正確に、曖昧性なく書くことが強く求められる

785:デフォルトの名無しさん
20/01/27 10:32:00 iRmt59/C.net
グーグルの採用試験で使われてて解説記事もたくさんあるからわからないのは読解力が劣ってるだけ

786:デフォルトの名無しさん
20/01/27 10:35:52 iRmt59/C.net
これ解けない人はグーグルに入社できない

787:デフォルトの名無しさん
20/01/27 10:42:24 7flpRMwp.net
・グーグルの採用試験と一言一句同じなのか
・グーグルに入社できることが何かの優位性を確実に示し得るのか

はい

788:デフォルトの名無しさん
20/01/27 10:46:12 iRmt59/C.net
>>766
全く同じ
グーグルは頭のいい人しか入社できない

789:デフォルトの名無しさん
20/01/27 10:50:27 7flpRMwp.net
>>767
はいダウト
うちの教養時代のクラスメイトの落ちこぼれがコネでグーグル入社してた

790:デフォルトの名無しさん
20/01/27 10:51:08 j8/I9hQ5.net
>>767
初っ端からビルの回数と書いてある時点で信憑性ゼロだろw

791:デフォルトの名無しさん
20/01/27 10:51:26 iRmt59/C.net
>>768
お前より頭良かったんじゃね
能ある鷹は爪を隠すと言うぞ

792:デフォルトの名無しさん
20/01/27 10:52:33 iRmt59/C.net
>>769
それはただのタイプミスだからそこに疑問を持つ人はいなかったよw
その指摘は流石に低学歴すぎる

793:デフォルトの名無しさん
20/01/27 10:54:56 7flpRMwp.net
>>770
爪隠したまま進振りぎりぎりの点数叩き出すやつなんてどの道馬鹿だろ

794:デフォルトの名無しさん
20/01/27 10:56:14 iRmt59/C.net
>>772
でもグーグル入社したんだろ
地頭が良いんだよ、俺にはわかる

795:デフォルトの名無しさん
20/01/27 10:57:17 7flpRMwp.net
>>773
結論ありきで推論しててキモいよお前
俺はグーグルに入社してるバカも知るっていう例を提示しただけ

796:デフォルトの名無しさん
20/01/27 10:58:37 iRmt59/C.net
>>774
客観的にお前の方が頭悪い

797:デフォルトの名無しさん
20/01/27 10:59:06 iRmt59/C.net
悔しかったら問題解いてグーグルにアピールしろ

798:デフォルトの名無しさん
20/01/27 11:01:10 7flpRMwp.net
ID:iRmt59/C がバカすぎて最高に笑える
まあそいつは麻布→理1→グーグルだから馬鹿だったけどお前よりは確実に賢いわ

799:デフォルトの名無しさん
20/01/27 11:02:05 iRmt59/C.net
>>777
高卒のわい涙目
もう二度と来ねえよクソが!!!

800:デフォルトの名無しさん
20/01/27 11:04:17 /nctx1iy.net
グーグル絶対賢いマンはこれネタやろワロタwww

801:デフォルトの名無しさん
20/01/27 11:12:30 j8/I9hQ5.net
>>771
タイプミスなんて言われんでも分かるよ。
一字一句同じ?同じ!なんて自信満々に答えてるくせに全く確認もしていないいい加減で信用できない奴だなと思っただけだよw

802:デフォルトの名無しさん
20/01/27 11:17:35 gE+WjllM.net
これがgoogleの入社問題!とかいうよくある釣り記事に踊らされた子だね

803:デフォルトの名無しさん
20/01/27 11:49:20 iRmt59/C.net
>>780
タイプミスはわかるのに問題は読み解けないんだな
それがお前の限界、無理すんな、お前には無理だ

804:デフォルトの名無しさん
20/01/27 11:50:22 iRmt59/C.net
二度と来ないとは言ったが出ていくとは言ってない

805:デフォルトの名無しさん
20/01/27 11:53:35 iRmt59/C.net
グーグルの前でお前らは生まれて初めての無力感を味わってるだろうがそれをバネに成長するかどうかはお前ら次第

問題に文句言って満足して終わるのか自らの力不足を認識して研鑽を積むのかこれでお前らの本当の実力が明らかになる

806:デフォルトの名無しさん
20/01/27 11:57:23 iRmt59/C.net
>>781
良くありそうな問題だがお前らは解けない
その現実を見せつけられて逆ギレするのはみっともない
無知を自覚してステップアップ、周りのみんなに差をつけよう

807:デフォルトの名無しさん
20/01/27 12:01:10 RkrU528F.net
わかったからID真っ赤にする前にスレタイくらい読もうね

808:デフォルトの名無しさん
20/01/27 12:14:18 iRmt59/C.net
スレタイ音読してノートに書き写して口と耳と手と頭を使い全身でスレタイを理解したけど俺は間違ってないぞ

問題を読み解いてあっと驚くようなオリジナリティ溢れる独創的で優雅な回答を期待してるんだがお前らは何を問われてるのかさえわからない状態だろ

手とり足取り教えて回答に導かれたとしても正確がひねくれてるお前らはそれを嬉しいとは思わないだろ、だったら俺がお前らにできることは一つだけ、お前らが殻を破って成長するのを見守るしかない

809:デフォルトの名無しさん
20/01/27 12:20:54 iRmt59/C.net
頑張れ!!

810:デフォルトの名無しさん
20/01/27 12:37:32.94 UkOypP5f.net
URLリンク(puzzlefry.com)
こっちにはちゃんと書いてある
>>734は劣化コピーだ

811:デフォルトの名無しさん
20/01/27 12:56:13 UkOypP5f.net
落とす回数だけ考えれば良いなら答えは簡単
プログラミングのお題である必要は無い
とても簡単な数学の問題

階の上下のコスト、たまご自体のコスト、たまごを落とすコスト
が決まっていて
コストの最小化問題であるなら
やっとプログラミングの出番

たまごを落とす回数しか効率よ中身として思い浮かばないのなら
発想が乏しすぎる

812:デフォルトの名無しさん
20/01/27 12:59:24 lki83My8.net
時間の無駄だってグーグルの人事が言ってからだいぶたつのに
まだこんなやついるのか

813:デフォルトの名無しさん
20/01/27 13:02:02 MAYcFInA.net
>>734
引っかけ問題だとすると、とにかく落として卵が割れさえすれば「何階で割れるか」は判明した事になる(何階が割れる割れないの境目の階かを求めよという問題になってないので)、いきなり最上階のN階まで上がってしまい、そこで一つ落として割れるかどうかを確認して終わり。

814:デフォルトの名無しさん
20/01/27 13:03:27 V1mi84GI.net
>>790
スレタイ見て

815:デフォルトの名無しさん
20/01/27 13:04:46 V1mi84GI.net
プログラミングの問題だから
理論ではなく実践を問う問題

816:デフォルトの名無しさん
20/01/27 13:26:30 V1mi84GI.net
>>791
黙れハゲ、人事について議論するな
プログラミングの問題を考えろ

817:デフォルトの名無しさん
20/01/27 13:27:47 V1mi84GI.net
>>792
そんなアホな問題をグーグルが出すわけ無いだろアホw

818:デフォルトの名無しさん
20/01/27 13:28:42 V1mi84GI.net
お前ら天の邪鬼こじらせて問題解けなくなってんじゃん

819:デフォルトの名無しさん
20/01/27 13:32:57 UkOypP5f.net
英文にはちゃんと書いている
日本語が単なる劣化コピー

820:デフォルトの名無しさん
20/01/27 13:42:35 V1mi84GI.net
はいはいもうええから問題解いてもらえる?

821:デフォルトの名無しさん
20/01/27 13:48:46 n/pRd1c3.net
Nの下1/3階で1回目落として割れれば最下階から順に上階に向かって落としていく
1回目割れなければ、残ってる階の下1/3階で落として割れれば残っている階の最下階から順に上階に向かって落としていく
以下繰り返し

822:800
20/01/27 14:03:08 n/pRd1c3.net
1回目割れなかったときが多すぎるわ失敗

1回目割れなかったときに最下階から落とす回数と、
割れたときに残った階で繰り返す回数が同じになる数値、が答えかな?

823:デフォルトの名無しさん
20/01/27 14:44:24 UkOypP5f.net
>>799
解いたけど

824:デフォルトの名無しさん
20/01/27 14:49:56.90 UkOypP5f.net
一人しか書いてないからどれかわかるよね

825:デフォルトの名無しさん
20/01/27 14:54:43.43 V1mi84GI.net
コードは?w

826:デフォルトの名無しさん
20/01/27 15:04:02 V1mi84GI.net
コードどこにあんねんwwwwww

827:デフォルトの名無しさん
20/01/27 15:05:01 V1mi84GI.net
腹イタイwww腹イタイwww

828:デフォルトの名無しさん
20/01/27 16:16:55 UkOypP5f.net
>>790

829:デフォルトの名無しさん
20/01/27 16:30:19 V1mi84GI.net
>>807
思わせぶりなこと言ってるだけで回答コードないですけどwww
何やり遂げたつもりになってんねんwww
何してんねんwww

830:デフォルトの名無しさん
20/01/27 16:30:35 V1mi84GI.net
笑わせんなwwwwww

831:デフォルトの名無しさん
20/01/27 16:42:59 LGsyX1lU.net
>>734
卵落とすやつ。自分のヤツ(>>740 )は、((N/2)+1)回で解ける。

832:デフォルトの名無しさん
20/01/27 17:56:53 yDu6+ckg.net
>>808
落とす回数をコストとするなら>>743で終わり
コードが欲しければ金払えばやるよ

833:デフォルトの名無しさん
20/01/27 18:03:48 V1mi84GI.net
>>811
それ間違ってるわwww
試しにコードに落としてみ

834:デフォルトの名無しさん
20/01/27 18:04:45 V1mi84GI.net
そのコードを俺に教えてみ

835:デフォルトの名無しさん
20/01/27 18:05:03 V1mi84GI.net
早くしてくれみ

836:デフォルトの名無しさん
20/01/27 18:07:47 yDu6+ckg.net
金払うってこと?
1万円でいいよ

837:デフォルトの名無しさん
20/01/27 18:11:22 V1mi84GI.net
>>815
お前のロジック間違ってるから添削してやろうと思ったんだが出したくないならいいわ、お前が恥かかないようにこっちは良かれと思って手を差し伸べてやったんだがそれを振り払うような真似をするならいいわ、考え直すなら今のうちだぞ

838:デフォルトの名無しさん
20/01/27 18:12:06 V1mi84GI.net
模範解答は一週間後な
あと一週間は引っ張れるわ

839:デフォルトの名無しさん
20/01/27 18:13:14 DT2W+6qB.net
合ってるから大丈夫
違うならそれは問題の解釈が私と違うというだけ

840:デフォルトの名無しさん
20/01/27 18:13:37.87 V1mi84GI.net
間違いを指摘されて出すに出せなくなって金額ふっかけて相手に断らせようとする卑怯な人は正直に手を上げなさい

841:デフォルトの名無しさん
20/01/27 18:15:15 RTaGNqK6.net
はいはい


842:デフォルトの名無しさん
20/01/27 18:16:41 V1mi84GI.net
>>818
向かうところ敵無しだな、敵わないわwww

843:デフォルトの名無しさん
20/01/27 18:19:10.77 fd+09zFE.net
いろんな解釈が可能な問題を出しといて
何言ってんだか

844:デフォルトの名無しさん
20/01/27 18:21:18 V1mi84GI.net
>>822
いやいやお前らが天の邪鬼魂を遺憾なく発揮して問題から逃げてるだけでググればわかるけどこの問題の解釈は明確に一つだけだぞ

845:デフォルトの名無しさん
20/01/27 18:21:43 ZY6HpsDp.net
占い師や詐欺師の手法

846:デフォルトの名無しさん
20/01/27 18:23:13 V1mi84GI.net
レッテル貼りまでやりだしたか
お前らがこんなに追い詰められるのも珍しいな

847:デフォルトの名無しさん
20/01/27 18:23:40 V1mi84GI.net
たかが問題一つでどんだけ焦ってるんだよ

848:デフォルトの名無しさん
20/01/27 18:24:20 V1mi84GI.net
お前らにも解けない問題があるってことを認めれば冷静になれるぞ

849:デフォルトの名無しさん
20/01/27 18:25:30 V1mi84GI.net
グーグルの入社試験は流石に難しすぎたか
しかたない問題を取り下げます!

850:デフォルトの名無しさん
20/01/27 18:27:15 V1mi84GI.net
以後この問題に関するレスの一切を禁止します!

851:デフォルトの名無しさん
20/01/27 18:48:38 MAYcFInA.net
1. 吉野家へ行って持ち帰りの牛丼を買う。
2. 家に帰ってから玉子を割って器に入れ醤油を少し入れてかき混ぜる。
3. 牛丼の上に掛ける。
4. 食べる。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1308日前に更新/270 KB
担当:undef