プログラミングのお題スレ Part16
■ このスレッドは過去ログ倉庫に格納されています
>>692 そんなルールはないけれど、制御構造の構文の代わりに安直に goto分岐を使ったヘッポココードではなくて、perl5のgoto 関数名構文が持つ continuationの機能を使って、動的環境を維持したまま末尾再帰的な loopを表現したと言いたかったのよ お題 .bash_history には、入力したコマンドが、1行ずつ追記されていくが、 同じコマンドが出てくると面倒なので、古い(上にある)方をすべて消してください 入力 5 3 1 4 2 5 3 4 5 出力 1 2 3 4 5 >>696 Ruby puts gets(p).split.reverse.uniq.reverse # => 1 2 3 4 5 >>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 >>696 https://ideone.com/PtMPWn RのuniqueにはfromLastオプションがあるので、revによる前後処理が不要。 >>696 Ruby a=STDIN.readlines puts a.select.with_index{|v,i| i==a.rindex(v)}.join >>696 .bashrc HISTCONTROL=erasedups:ignorespace ついでに HISTIGNORE="history*" >>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)) >>704 アンカーしくった >>702 ナイスはこっちだた >>702 スレ違いで、スマンが、 erasedups で、現在の行と一致する履歴を、保存前にすべて削除するけど、 WSL, Ubuntu 18.04, bash では、削除されなかった! これは難しい tmuxとかの仮想端末で複数の画面間で、Bashのコマンド履歴を共有すると、 同じ履歴が何度も記録されてしまう問題を解決する https://piro.sa @kura.ne.jp/latest/blosxom/webtech/2018-03-04_history-nodup-with-tmux.htm history の仕組みが難しいから、 定期的に、ここのスクリプトで、履歴ファイルを上書きした方が良いかも rubyXLでエクセルいじってるが 印刷範囲を設定したいときは、どのようにすればよいのでしょうか? いろいろ探しても見当たらず・・ >>709 スレチ >>708 bashから.bash_profileの重複をなくすプログラムを実行しても logoutするときにbashが記憶しているコマンド履歴を.bash_profileに 上書きしちゃって、元の木阿弥になるんジャマイカ >>710 >>706 のサイトに書いてあるけど、 .bash_history から重複を排除して、上書きする 次に、history -c && history -r -c で、メモリ上のコマンド履歴を削除して、 -r で、履歴ファイルからメモリへ、コマンド履歴を読み込む まだ、試してないけど >>696 Ruby で作った。 コマンドは「ruby script.rb 入力ファイル名」 # ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル ary = ARGF.readlines # 1行ずつ配列に入れる # ! が付く破壊的メソッドは、メソッドチェーンしない! ary.reverse! ary.uniq! # 連続していないものも削除する ary.reverse! # 元に戻す print ary.join >>711 の方法で、.bash_history から重複を排除できました! お題: 入力された整数を因数分解し、因数の数だけ「どんだけぇ〜♪」と表示せよ in < 24 因数分解: 2 2 2 3 out > どんだけぇ〜♪ どんだけぇ〜♪ どんだけぇ〜♪ どんだけぇ〜♪ >>709 121 名前:デフォルトの名無しさん (ワッチョイ a763-gk0v)[] 投稿日:2020/01/25(土) 15:52:45.46 ID:WZ3Oswhu0 rubyXLでエクセルいじってるが 印刷範囲を設定したいときは、どのようにすればよいのでしょうか? いろいろ探しても見当たらず・・ >>714 Ruby puts "どんだけぇ〜♪\n"*~-`factor`.split.size お題: どこかの国に競馬があった。そこの競馬場のルールでは馬券一枚に対して単勝の馬一頭しか選べない。 その日の各ゲームのそれぞれの出場馬について、名前と勝率とオッズが掲示されている。 【今日の競馬】 ゲーム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円で獲得期待金額が最大になるように馬券を購入せよ。馬券の購入において、小数点以下は切り捨てとし、馬券には税金が掛からないものと仮定する。 勝率の和が1を越えてるけど勝率って言うのは勝つ確率のことではなくて何かしらの競馬用語なのか? ここでは、払戻金の倍率(賭けた金が何倍になって払い戻されるか)のことをオッズと呼ぶことにする。払戻金は小数点以下切り捨てとする。 >>719 馬の勝率はこれまでのレースで一着になった確率。 勝つ確率がわからないなら期待値もわからない 普通は買わないのが一番 >>718 ちゃんとしたお題にするつもりが無いなら取り下げて >>718 >>728 取り下げます。もっと良いお題を考えて下さい。 >>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 以上が実行されないらしく困っています もしかしたら初学者の自分にもできるかもしれないと思い取り組んでみたのですが… もしどなたかお知恵をお貸しくだされば嬉しいです >>730 for(let i=2;i<=Math.floor(n/2);i++){ を const sup = Math.sqrt(n); for(let i=2;i<=sup;i++){ >>731 ありがとうございます!動きました 何かとんでもない思い違いをしていたみたいで恥ずかしい… >>729 ビルの回数Nを引数として受け取って次の問題を解くプログラムを作ってください N階建てのビルのある階から卵を落とします。 卵はある階よりも低ければ割れることはなく、ある階よりも高いと割れてしまう。 今、あなたは卵を2つ持っています。 卵が何階で割れるかを調べるもっとも効率のよい方法は何ですか? そして、その方法で必要な卵を落とす回数は最大で何回ですか? >>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; } >>734 効率 とは? 落とす回数の平均? 落とす回数の最大? 階を上がる回数の平均? 階を上がる回数の最大? 他? 卵を使う個数 ってのもある これだとリニア検索で1個使用でつまらん問題になるけど >>734 プログラミング言語・日本語でいうと、 2階から落としていって、割れるまで二階ずつ上っていく。 割れたら一階下りて割れるか確認する。 基本的にそれだけ。 >>735 二分探索だとタマゴが割れて調べられないケースがでてくるんよー >>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('どんだけぇ〜♪'); } } ここはこうした方がいい等あれば教えていただけると幸いです >>734 1階は必ず割れない N階は必ず割れる という設定とする 卵を落とす最大回数をa回とすると N≦(a^2 + a + 4)*0.5 までは調べられる >>742 後学のために教えてほしいんだが、なんでnをsqrtしてsup作ってるんだい? >>742 n/= i を実行する度にsupの値を減らせる 最後に残ったnが1じゃない場合 もう1回文字列を表示する必要がある >>744 そこは731さんの指摘のままに書いて深く考えていませんでしたが 745さんの言うようにsupの値を減らせるというところにヒントがありそうですね 再帰的?なやりかたになるのかな…うーんわからん >>745 上については上述の通りまだわかりませんが 下は、小さい順にしらみつぶしで割れるだけ割っていっているのでおっしゃるような結果にはならないのではと考えるのですがどうでしょうか >>746 nに3とかを入れてみると最後の表示については確認できるかと 割り切れたときはiはそのまま 割り切れなかったらiを+1 ループでできるはず >>747 確認しました…>最後の表示 ちゃんと自分で調べないとダメですね ちょっと直してみます >>734 このお題は、どこかで見た VBScript のスレか何かで、ピッコロ大魔王が出したクイズじゃないの?w >>744 素数かどうかなど、素因数分解する際、平方根まで調べれば見つかるから 例えば、a, b が素数で、a < b の時、 a * b = 7 * 11 = 77 なら、√77 = 8.8 で、aは、9 以下で必ず見つかる つまり、 平方根よりも小さいa * 平方根よりも大きいb = 77 >>749 ネタ元はグーグルの入社試験 ググったら解法もわかる プログラムで解いてる人は少ないからプログラミング能力を測るのに適当かと お題 ある長方形の面積Sが与えられたとき 短い方の辺の長さが最も長くなるときの縦の長さと横の長さを出力してください >>751 掛け算の対称性は小学校の算数で習うので 整数論とかそんな難しい話は必要ないんじゃ…… >>754 正解 素因数分解もそうだしグーグルの問題もそういうこと >>714 Ruby require 'prime' n=24 Prime.prime_division(n).each{|_,k| puts ["どんだけぇ〜♪"]*k} 出題者には回答者からのお題の疑問には答えない主義なの? 「効率」とは何か聞かれてなかった? パズル問題は曖昧性なく出題しようよ 解釈で全く違う問題になる 文章の読解も問題に含まれてるのでうざ絡みで答え教えてもらおうとするのは卑怯 それは問題が十分よくできているときにのみ有効な論であって、 例えば賭け事のオッズとして1未満の値を設定してくるような阿呆がいた場合にはそれ相応の質疑が必要 >>761 この分野では正確に、曖昧性なく書くことが強く求められる グーグルの採用試験で使われてて解説記事もたくさんあるからわからないのは読解力が劣ってるだけ ・グーグルの採用試験と一言一句同じなのか ・グーグルに入社できることが何かの優位性を確実に示し得るのか はい >>766 全く同じ グーグルは頭のいい人しか入社できない >>767 はいダウト うちの教養時代のクラスメイトの落ちこぼれがコネでグーグル入社してた >>767 初っ端からビルの回数と書いてある時点で信憑性ゼロだろw >>768 お前より頭良かったんじゃね 能ある鷹は爪を隠すと言うぞ >>769 それはただのタイプミスだからそこに疑問を持つ人はいなかったよw その指摘は流石に低学歴すぎる >>770 爪隠したまま進振りぎりぎりの点数叩き出すやつなんてどの道馬鹿だろ >>772 でもグーグル入社したんだろ 地頭が良いんだよ、俺にはわかる >>773 結論ありきで推論しててキモいよお前 俺はグーグルに入社してるバカも知るっていう例を提示しただけ ID:iRmt59/C がバカすぎて最高に笑える まあそいつは麻布→理1→グーグルだから馬鹿だったけどお前よりは確実に賢いわ >>777 高卒のわい涙目 もう二度と来ねえよクソが!!! >>771 タイプミスなんて言われんでも分かるよ。 一字一句同じ?同じ!なんて自信満々に答えてるくせに全く確認もしていないいい加減で信用できない奴だなと思っただけだよw これがgoogleの入社問題!とかいうよくある釣り記事に踊らされた子だね >>780 タイプミスはわかるのに問題は読み解けないんだな それがお前の限界、無理すんな、お前には無理だ グーグルの前でお前らは生まれて初めての無力感を味わってるだろうがそれをバネに成長するかどうかはお前ら次第 問題に文句言って満足して終わるのか自らの力不足を認識して研鑽を積むのかこれでお前らの本当の実力が明らかになる >>781 良くありそうな問題だがお前らは解けない その現実を見せつけられて逆ギレするのはみっともない 無知を自覚してステップアップ、周りのみんなに差をつけよう わかったからID真っ赤にする前にスレタイくらい読もうね スレタイ音読してノートに書き写して口と耳と手と頭を使い全身でスレタイを理解したけど俺は間違ってないぞ 問題を読み解いてあっと驚くようなオリジナリティ溢れる独創的で優雅な回答を期待してるんだがお前らは何を問われてるのかさえわからない状態だろ 手とり足取り教えて回答に導かれたとしても正確がひねくれてるお前らはそれを嬉しいとは思わないだろ、だったら俺がお前らにできることは一つだけ、お前らが殻を破って成長するのを見守るしかない 落とす回数だけ考えれば良いなら答えは簡単 プログラミングのお題である必要は無い とても簡単な数学の問題 階の上下のコスト、たまご自体のコスト、たまごを落とすコスト が決まっていて コストの最小化問題であるなら やっとプログラミングの出番 たまごを落とす回数しか効率よ中身として思い浮かばないのなら 発想が乏しすぎる 時間の無駄だってグーグルの人事が言ってからだいぶたつのに まだこんなやついるのか >>734 引っかけ問題だとすると、とにかく落として卵が割れさえすれば「何階で割れるか」は判明した事になる(何階が割れる割れないの境目の階かを求めよという問題になってないので)、いきなり最上階のN階まで上がってしまい、そこで一つ落として割れるかどうかを確認して終わり。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる