質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

973閲覧

Atcoderのコードの意味を理解したい

light180

総合スコア161

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2019/08/22 07:47

Atcoderのとある提出のコードの意味が分かりません。
どなたか、教えていただけると嬉しいです。
https://atcoder.jp/contests/joi2019yo/submissions/5942936

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

あえて一般論で答えますが、細かく分けて理解してみましょう。まずはb=[1]*2e5が何を生成しているか、手元で実行すれば確認できるかと思います。このコードの場合、メソッドの呼び出しは比較的わかりやすいので、1つの呼び出しごとに区切って見ていくのがいいかと思います。


このような、「ショートコーディング」あるいは「コードゴルフ」と呼ばれるような遊びは、処理系特有な事情を使ったり、通常は使わない機能を呼び出したり、可読性を投げ捨てたコードを書いたりするので、実用的なコードを書くという観点とはかけ離れています。たしかに趣味としては楽しいかもしれませんが、実践的な技能向上になるのかといえば疑問符が付きます。

投稿2019/08/22 07:55

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

light180

2019/08/22 09:39 編集

回答ありがとうございます。 ありがとうございます、最近、ショートコーディングについて興味が出たので、このようにして、学んでいます。 やってみます。
light180

2019/08/22 09:20

一行目の意味はわかった気がします。 2e5は、大きい数を表すときに、電卓とかで見たことがあります。 なので、これは、配列を初期化するという意味なのではないでしょうか?
light180

2019/08/22 10:47

大体、分かりました。 回答ありがとうございました。 ベストアンサーに選ばせていただきます。
guest

0

さほど難しいこともなく、省略や短いメソッド名を用いたRubyコードですが
どこが読めないのでしょうか?

ruby

1b=[1]*200000.0 2x=0 3p (0...gets.to_i).group_by{ 4 $/=' ' 5 - gets.to_i 6}.sort.map{|k,v| 7 if k < 0 8 v.each{|i| 9 x += b[i] + b[i+2]-1 10 b[i+1] = 0 11 } 12 end 13 x 14}.max

への展開はできていますか?

group_byの結果をsortした場合の挙動を読み解くのは若干難しいですが
るりまをよく読めば書いてある程度の仕様です。

投稿2019/08/22 10:39

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

light180

2019/08/22 10:45

回答、ありがとうございます。難しそうに見えていましたが、よくみると最初の2e5がわからなかっただけでした。 ありがとうございました!
light180

2019/08/22 10:46

今回は、最初に答えてくだ去った@maisumakunをベストアンサーに選ばせていただきます。
asm

2019/08/22 10:47

2e5が分からないのならばirbでp 2e5と打てばよいだけです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問