サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
qiita.com/superrino130
はじめに WindowsでRubyのインストールと言えばRubyInstallerですが、CrystalをインストールするにはScoopが必要なので、本格的に移行してみました。 bundle でハマった Gemfileでパッケージ管理が楽々が魅力のRuby、しかしnative extensionsのインストールでエラーが発生。 Fetching gem metadata from https://rubygems.org/..... Resolving dependencies... Fetching debase 0.2.5.beta2 Installing debase 0.2.5.beta2 with native extensions ... An error occurred while installing debase (0.2.5.beta2), and Bundler c
はじめに Atcoderのコンテストにて、RubyでTLEが解消しないこと、ないでしょうか。 私はあります。 Rubyのコードを速い言語にトランスパイルして欲しいと思ったこと、ないでしょうか。 私はあります。 前回記事にてripperの内容が少し理解できましたので、それをcrystalに応用してみました。 但し、julializerはRipper.sexpを使用、こちらはRipper.lexを使用しています。 また、諸先輩の記事を参照させていただきました。 Crystallizer require 'ripper' module Crystallizer class << self def ruby2crystal(source) transpile(Ripper.lex(source)) end private def transpile(s) arr = [] s.map do |w|
はじめに Windows版rubyinstallerの話ですが、ridkってご存知ですか。 私は知りませんでした。 実はいつも見ていた rubyinstallerの終わりの方に出てくるコマンドプロンプト画面。 実はこれ、ridkだったんです。 次のバージョンをインストールするまでお目にかかることもないと思っていましたが、次のコマンドで呼び出すことができます。 実はアップデートもできる 2年前はmsys2でpacmanを使用していましたので、頻繁にアップデートしておりましたが、rubyinstallerを使用してからはアップデートしなくて楽だった次のコマンド等で、アップデート可能です。
はじめに AtCoder Problems の Recommendation を利用して、過去の問題を解いています。 AtCoder さん、AtCoder Problems さん、ありがとうございます。 今回のお題 AtCoder Beginner Contest D - Powerful Discount Tickets Difficulty: 826 今回のテーマ、優先度付きキュー 操作自体はシンプルで、一番値段の高い品物をキューから取り出し、割引券を一枚適用してキューに戻します。その都度、一番値段の高い品物ついて同様の操作を割引券がなくなるまで行います。 但し、次の様に単にソートするだけの実装では、TLEになります。 n, m = gets.split.map(&:to_i) a = gets.split.map(&:to_i) a.sort_by!{|x| -x} m.times
n, m = gets.split.map(&:to_i) MOD = 1_000_000_007 def nPk(n, k) r = 1 while k > 0 r *= n r %= MOD n -= 1 k -= 1 end r end if (n - m).abs > 1 puts 0 elsif n == m puts nPk(n, n) * nPk(m, m) * 2 % MOD else puts nPk(n, n) * nPk(m, m) % MOD end
はじめに AtCoder Problems の Recommendation を利用して、過去の問題を解いています。 AtCoder さん、AtCoder Problems さん、ありがとうございます。 今回のお題 AtCoder Regular Contets C - Attention Difficulty: 641 今回のテーマ、累積和 入力例 2 のWEWEWEEEWWWEを考察しますと、WEWEWEEiWWWEとなりiの左側のWの個数と右側のEの個数の合計が求める人数となります。 文字列の左0から右n-1に向かって、Eは単調減少、Wは単調増加ですので、計算量を抑える手法として累積和を使用します。 n = gets.to_i s = gets.chomp e = (s[0] == 'E' ? [1] : [0]) w = (s[0] == 'W' ? [1] : [0]) 1.up
入力例 4 の972439611840を素因数分解しますと、{2=>6, 3=>3, 5=>1, 103=>4}となります。 これを N 個の整数に分配すれば解答が求まります。N 個未満の素数は、最大公約数に寄与しないわけです。 require 'prime' n, p = gets.split.map(&:to_i) if p == 1 puts 1 elsif n == 1 puts p else h = Prime.prime_division(p).to_h ans = 1 h.each do |k, v| while v >= n ans *= k v -= n end end puts ans end
これは左右対称な問題ですので、仮にハッシュに代入した場合、奇数名では2221222、偶数名では22222222の様なvalues配列になると想定されます。 それ以外の場合は、並び方がないと判断できます。 また、以前投稿しました Ruby と Perl と Java と Python で解く AtCoder ATC 002 B が役立つ時が来ました。 2の掛け算の組合せ数ですので、上記投稿で作成した繰返し二乗法(関数|メソッド)がそのまま使用できます。 n = gets.to_i a = gets.split.map(&:to_i) h = Hash.new(0) a.each do |x| h[x] += 1 end f = true h.each do |k, v| if n.odd? && k == 0 if v != 1 f = false break end elsif v !=
はじめに AtCoder Problems の Recommendation を利用して、過去の問題を解いています。 AtCoder さん、AtCoder Problems さん、ありがとうございます。 今回のお題 AtCoder Beginner Contest 131 D - Megalomania Difficulty: 594 今回のテーマ、配列のソート
はじめに AtCoder Problems の Recommendation を利用して、過去の問題を解いています。 AtCoder さん、AtCoder Problems さん、ありがとうございます。 今回のお題 AtCoder Beginner Contest 113 C - ID Difficulty: 877 今回のテーマ、リファレンス n, m = gets.split.map(&:to_i) p = [] m.times do |i| y = gets.split.map(&:to_i) p[i] = [i, y, ""] end p.sort! {|a, b| (a[1][0]<=>b[1][0]).nonzero? || (a[1][1]<=>b[1][1])} pref = 0 cnt = 1 m.times do |i| if pref == p[i][1][0] cn
追記 階段数 = 足元の段 + 次の段 です。 @swordone さん、コメントありがとうございました。 階段の上がり方は、上記の通りですが、勘のいい方は フィボナッチ数 であることに気付くと思います。 そこで、連続した階段数を求め例.#.#...->1, 1, 3、組合せ数を総乗していきます。fib(1) * fib(1) * fib(3) n, m = gets.split.map(&:to_i) a = [] 1.upto(m) do |i| a[i] = gets.to_i end a[0] = -1 a.push(n + 1) b = [] 1.upto(m + 1) do |i| if a[i] - a[i - 1] == 1 puts "0" exit end b.push(a[i] - a[i - 1] - 1) end fib = [] fib[1] = 1 fib[2
このページを最初にブックマークしてみませんか?
『qiita.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く