結果

問題 No.6 使いものにならないハッシュ
ユーザー らっしー(raccy)らっしー(raccy)
提出日時 2014-12-23 23:03:28
言語 Ruby
(3.3.0)
結果
AC  
実行時間 152 ms / 5,000 ms
コード長 2,217 bytes
コンパイル時間 221 ms
コンパイル使用メモリ 7,552 KB
実行使用メモリ 13,184 KB
最終ジャッジ日時 2024-09-16 16:23:18
合計ジャッジ時間 5,509 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 98 ms
12,416 KB
testcase_01 AC 93 ms
12,416 KB
testcase_02 AC 152 ms
13,184 KB
testcase_03 AC 113 ms
12,672 KB
testcase_04 AC 121 ms
12,800 KB
testcase_05 AC 120 ms
12,800 KB
testcase_06 AC 146 ms
13,184 KB
testcase_07 AC 140 ms
13,056 KB
testcase_08 AC 144 ms
13,056 KB
testcase_09 AC 134 ms
13,056 KB
testcase_10 AC 96 ms
12,288 KB
testcase_11 AC 115 ms
12,544 KB
testcase_12 AC 148 ms
12,928 KB
testcase_13 AC 132 ms
12,928 KB
testcase_14 AC 134 ms
12,928 KB
testcase_15 AC 140 ms
13,056 KB
testcase_16 AC 139 ms
13,056 KB
testcase_17 AC 144 ms
12,928 KB
testcase_18 AC 150 ms
13,056 KB
testcase_19 AC 144 ms
13,056 KB
testcase_20 AC 143 ms
13,184 KB
testcase_21 AC 101 ms
12,416 KB
testcase_22 AC 145 ms
12,928 KB
testcase_23 AC 147 ms
13,184 KB
testcase_24 AC 145 ms
13,184 KB
testcase_25 AC 139 ms
12,928 KB
testcase_26 AC 146 ms
13,056 KB
testcase_27 AC 142 ms
13,184 KB
testcase_28 AC 125 ms
12,672 KB
testcase_29 AC 148 ms
12,928 KB
testcase_30 AC 148 ms
13,056 KB
testcase_31 AC 140 ms
13,184 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

# coding: utf-8
require "prime"

# プッチ神父クラス
class Pucci
  # 落ちつけ…………
  def initialize(begin_num, end_num)
    @begin_num = begin_num
    @end_num = end_num
    # 今持っている素数のリスト
    @prime_list = []
    # そのハッシュのリスト
    @prime_hash_list = []
    # 今までで最大のリストの長さ
    @max_length = 0
    # そのときの素数
    @prime_of_max_length = nil
  end

  # 心を平静にして考えるんだ…
  # こんな時どうするか……
  def calc_useless_hash(num)
    sum = 0
    while num > 0
      sum += num % 10
      num /= 10
    end
    if sum < 10
      return sum
    else
      return calc_useless_hash(sum)
    end
  end

  # 落ちつくんだ…
  # 「素数」を数えて落ちつくんだ…
  def prime_each
    Prime.instance.each do |prime|
      if prime < @begin_num
        # 2…3…5…
        next
      elsif prime <= @end_num
        # 7…11…13…17…19…
        yield prime
      else
        # 2**57885161−1 「時の加速」により「加速」の行きつく究極の所!
        break
      end
    end
  end

  # 「素数」は1と自分の数でしか割ることのできない孤独な数字……
  # わたしに勇気を与えてくれる
  def give_prime(prime)
    prime_hash = calc_useless_hash(prime)
    if @prime_hash_list.include?(prime_hash)
      collision_index = @prime_hash_list.index(prime_hash)
      # 神の御命においてしりぞけるッ!
      @prime_list.shift(collision_index + 1)
      @prime_hash_list.shift(collision_index + 1)
    end
    @prime_list.push(prime)
    @prime_hash_list.push(prime_hash)
    if @prime_list.size >= @max_length
      # 「宇宙」は一巡したッ!「新しい世界」だッ!
      @prime_of_max_length = @prime_list[0]
      @max_length = @prime_list.size
    end
  end

  # 人類は一つの終点に到着し『夜明け』を迎えたのだッ!
  def say_answer_of_life_universe_everything
    puts @prime_of_max_length || 42
  end
end

k = gets.to_i
n = gets.to_i

pucci = Pucci.new(k, n)
pucci.prime_each do |prime|
  pucci.give_prime(prime)
end
pucci.say_answer_of_life_universe_everything
0