Ruby

AOJ(問題集)17

AIZU ONLINE JUDGE: Programming Challenge 0160 Delivery Fee table = [[60, 2, 600], [80, 5, 800], [100, 10, 1000], [120, 15, 1200], [140, 20, 1400], [160, 25, 1600]] until (n = $<.gets.to_i).zero? result = n.times.map {$<.gets.split.map(&:to…

AOJ(問題集)16

AIZU ONLINE JUDGE: Programming Challenge 0150 Twin Prime N = 10007 sieve = [*0..N] 2.upto(Math.sqrt(N).to_i) do |i| next if sieve[i].zero? 2.upto(N / i) {|j| sieve[i * j] = 0} end sieve = sieve[2..-1].reject {|x| x.zero?} until (n = $<.get…

AOJ(問題集)15

AIZU ONLINE JUDGE: Programming Challenge 0140 Bus Line line = [*0..9] + [5, 4, 3, 2, 1] line += line $<.gets.to_i.times do start, goal = $<.gets.split.map(&:to_i) str = if 1 <= start and start <= 5 and start > goal [*goal..start].reverse.j…

AOJ(問題集)14

AIZU ONLINE JUDGE: Programming Challenge 0130 Train $<.gets.to_i.times do given = $<.gets.chomp.split(/(->|<-)/) train = [given.shift] while (dir = given.shift) car = given.shift next if train.include?(car) (dir == "->") ? train.push(car) …

AOJ(問題集)13

AIZU ONLINE JUDGE: Programming Challenge 0120 Patisserie @memo = {} def length(circles) return @memo[circles] if @memo[circles] l = case (s = circles.size) when 0 then 0 when 1 then 0 when 2 r1, r2 = circles.first, circles.last Math.sqrt((…

AOJ(問題集)12

AIZU ONLINE JUDGE: Programming Challenge 0110 Alphametic $<.readlines.map(&:chomp).map {|l| l.split(/\+|=/)}.each do |given| catch(:jump) do 10.times do |i| d = given.map {|a| a.gsub("X", i.to_s)} next unless d.select {|s| s.length >= 2 an…

AOJ(問題集)11

AIZU ONLINE JUDGE: Programming Challenge 0100 Sale Result 問題が曖昧。同じ社員が二度出てくるかどうかはっきりしない。 Border = 1_000_000 until (n = $<.gets.to_i).zero? data = Hash.new(0) entry = [] n.times do e, p, q = $<.gets.split.map(&:t…

AOJ(問題集)10

AIZU ONLINE JUDGE: Programming Challenge 0091 Blur L = 10 table = [[[0, 0], [0, 1], [-1, 1], [1, 1], [0, 2], [-1, 2], [-2, 2], [1, 2], [2, 2], [0, 3], [-1, 3], [1, 3], [0, 4]], [[0, 0], [1, 0], [2, 0], [0, 1], [1, 1], [2, 1], [0, 2], [1, 2…

Ruby のバージョンアップ

まずは rbenv install --list の更新(参照)。 $ cd ~/.rbenv/plugins/ruby-build $ git pull origin master インストール。 $ rbenv install 2.x.x $ rbenv global 2.x.x #例 ローカルな Gem の更新。該当ディレクトリで $ rbenv exec gem install bundler…

AOJ(問題集)9

AIZU ONLINE JUDGE: Programming Challenge 0081 A Symmetric Point require 'matrix' $<.readlines.map {|l| l.split(",").map(&:to_f)}.each do |x1, y1, x2, y2, xq, yq| p1 = Vector[x1, y1] n = Vector[y2 - y1, x1 - x2].normalize q = Vector[xq, yq]…

AOJ(問題集)8

AIZU ONLINE JUDGE: Programming Challenge 0071 Bombs Chain $<.gets.to_i.times do |co| $<.gets field = Array.new(8) {$<.gets.chomp.chars.map(&:to_i)} xi, yi = $<.gets.to_i, $<.gets.to_i blast = ->(x, y) { field[y][x] = 2 3.times do |i| [[1, …

AOJ(問題集)7

AIZU ONLINE JUDGE: Programming Challenge 0061 Rank Checker data = [] until (st = $<.gets.chomp) == "0,0" data << st.split(",").map(&:to_i) end data.sort! {|a, b| b[1] <=> a[1]} x = data.first.last h = {} l = 1 data.each do |d| l += 1 unles…

AOJ(問題集)6

AIZU ONLINE JUDGE: Programming Challenge 0051 Differential II $<.readlines.drop(1).map {|a| a.chomp.chars.map(&:to_i).sort}.each do |ary| puts ary.reverse.join.to_i - ary.join.to_i end 0052 Factorial II until (n = $<.gets.to_i).zero? five …

AOJ(問題集)5

AIZU ONLINE JUDGE: Programming Challenge 0041 Expression def solve(ary) if ary.size <= 1 return ary[0] if eval(ary[0]) == 10 else idxs = [*0...ary.size] idxs.combination(2) do |i, j| a, b = ary[i], ary[j] nxt = (idxs - [i, j]).map{|x| ary[…

AOJ(問題集)4

AIZU ONLINE JUDGE: Programming Challenge 0031 Weight def measure(object, weight, result = []) return result.join(" ") if weight.zero? result.unshift(weight) if (object / weight).nonzero? measure(object % weight, weight / 2, result) end $<.…

暗黙の Proc化(Ruby)

[1] pry(main)> (1..4).map {|i| i + 3} => [4, 5, 6, 7] これと [2] pry(main)> (1..4).map(&->(i) {i + 3}) => [4, 5, 6, 7] は同じ。引数での & は Proc をブロックに変換するから。(正確にはさらにそれを暗黙に .call() している。) では、 [3] pry(ma…

AOJ(問題集)3

AIZU ONLINE JUDGE: Programming Challenge 0021 Parallelism $<.readlines.drop(1).map {|a| a.split.map(&:to_r)}.each do |x1, y1, x2, y2, x3, y3, x4, y4| puts((x2 - x1) * (y4 - y3) == (x4 - x3) * (y2 - y1) ? "YES" : "NO") end 単純な問題なのに…

RMagick で LoadError

RMagick に関して次のエラーが出た。Ubuntu 18.10, Ruby 2.3.4。

AOJ(問題集)2

AIZU ONLINE JUDGE: Programming Challenge 0011 Drawing Lots given = $<.readlines lines = [*0..given.first.to_i] given.drop(2).map {|x| x.split(",").map(&:to_i)}.each do |a, b| lines[a], lines[b] = lines[b], lines[a] end puts lines.drop(1) 0…

AOJ(問題集)1

AIZU ONLINE JUDGE: Programming Challenge 0000 QQ 9.times do |i| 9.times {|j| puts "#{x = i + 1}x#{y = j + 1}=#{x * y}"} end 0001 List of Top 3 Hills puts $<.readlines.map(&:to_i).sort {|a, b| b <=> a}.take(3) 0002 Digit Number $<.readlines…

「コマ大数学科」を Ruby で(3)

marginalia.hatenablog.com marginalia.hatenablog.com続きです。 引き続き 「コマ大数学科」に挑む このサイトから問題を拝借いたします(ありがとうございます!) 法政に挑戦(2009/12/8) 問題: 行列 を50個かけ合わせたとき、できる行列を求めてくだ…

「コマ大数学科」を Ruby で(2)

marginalia.hatenablog.com続きです。引き続き 「コマ大数学科」に挑む このサイトから問題を拝借いたします(ありがとうございます!) フラッグ(2008/9/11) 問題: 1m間隔で一列に13本並んだ旗をどこか1箇所の旗のところに集めたい。1度に1本の旗…

「コマ大数学科」を Ruby で(1)

izu-mix.comプログラミングで解けそうな問題だけ解いています。 #001 フィボナッチ数列 問題: 15段の階段を上るとき、1段上るか、2段上るか、2通りの方法を組み合わせて登ると、何通りの登り方があるか。 コード。 def fib(n) return 1 if n == 1 return 2 …

Ruby の callcc(継続)

Ruby 2.2 から非推奨になってしまった callcc(継続)ですが…。callcc は goto みたいなものです。 callcc {|cnt| ..} とあるとき、継続 cnt が call されると、callcc {|cnt| ..} の「後へ」処理が移ります。メソッド call に引数があった場合は、それが ca…

Python のリスト内包表記と Ruby の map

内包表記は Ruby は map でいけるんじゃね?という話。pythonの内包表記を少し詳しく の例を使ってみる。例えば Python で [i for i in range(10)] というのは (0...10).map(&:itself) とか。まあこれは Array.new(10, &:itself) とか 10.times.to_a とかも…

Ruby/SDL でゲームパッドを使う

ゲームパッドで四角が動き回ります。Aボタンでビームの発射、Bボタンで一時停止、selectボタンで終了。sdl_sample7.rb require 'sdl' Width, Height = 300, 300 SDL.init(SDL::INIT_VIDEO | SDL::INIT_JOYSTICK | SDL::INIT_AUDIO) screen = SDL::Screen.ope…

Ruby の新しい演算子候補 / 標準添付ライブラリ 'thwait'

*>って Ruby の新しい演算子として使えることない? 右側代入とか。同様に +> とか /> とかも使えそう。 ~> とかもいけそうだけれど、-> とまちがえやすそう。関係ないけれど、早く Guild 使ってみたいな。笹田さん、がんばって下さい。 Thread の話。いくつ…

Ruby の Module 覚え書き

module Example def a output "inner" end def output(st) puts st end end include Example output "outer" #=>"outer" a #=>"inner" include すればモジュール内のメソッドがふつうに使える。 module Example def a output "inner" end def output(st) put…

Ruby のクラスメソッド、特異クラスのインスタンス変数

Ruby Gold合格できました。感想と振り返り - 気軽に楽しくプログラムと遊ぶ ここでちょっとオッと思ったのでメモ。 class MyClass @v = 1 def foo @v #=>nil end class << self @v = 2 # 特異クラスへのメソッド定義はクラスメソッド定義 def foo @v #=>1 en…

Qiita のデザインパターンまとめがおもしろかった

qiita.comおもしろかったので自己流にメモしておく。 Template Method 日記を書いて、複数のフォーマットで出力することを考える。日記の内容は、タイトルと何行かの本文、フォーマットは HTML とプレーンテキスト。 class Diary def initialize(title, text…