Skip to content

Instantly share code, notes, and snippets.

@keiji-mu
keiji-mu / salvageon.rb
Created December 16, 2014 06:13
CodeIQ q1215 サルベジオン社で宇宙船のデータを救え
#! /usr/bin/ruby
# CodeIQ q1215 サルベジオン社で宇宙船のデータを救え
# 初期処理 -- API キャッシュロード
BEGIN {
MEMOFILE = 'apicache.db'
$memo = File.open(MEMOFILE) do |io|
Marshal.load( io)
end rescue {}
}
@keiji-mu
keiji-mu / q1097.rb
Created October 18, 2014 16:30
CodeIQ 1097 中学入試から:正三角形?二等辺? 綴り間違ってた orz
#! /usr/bin/ruby
# coding: sjis
# CodeIQ q1097 中学入試から:正三角形?二等辺?
REGULAR = 'あ'
ISOSCELES = 'い'
OTHOER = 'う'
wa=[]
$<.each do |l|
@keiji-mu
keiji-mu / ticketgobble1.rb
Created May 20, 2014 14:08
CodeIQ 863 チケットゴブル社の旅行プランを作れ!
#! /usr/bin/ruby
# 分割+分枝限定法版
# 最大ツアー数プラン検索クラス
class MaxPlan
# コンストラクタ
def initialize( tore)
@tore = tore
@keiji-mu
keiji-mu / q835.lisp
Last active August 29, 2015 14:01
CodeIQ 835 「第2回デスマコロシアム」 再提出の CommonLisp 94文字コードと、逃走前の Ruby 60文字コード
(do((s"`@ぁァァぁ@`"(princ(map'string(lambda(c)(code-char(1+(char-code c))))s))))((string> s"z")))
@keiji-mu
keiji-mu / spacetolkyrb
Last active August 29, 2015 14:00
CodeIQ q832 スペーストーキー社の危機を救え! 解答。 WebAPI を永続的キャッシュ付きでアクセスします
#! /usr/bin/ruby
# CodeIQ q832 スペーストーキー社の危機を救え!
# 初期処理 -- API キャッシュロード
BEGIN {
MEMOFILE = 'apicache.db'
$memo = File.open(MEMOFILE) do |io|
Marshal.load( io)
end rescue {}
}
@keiji-mu
keiji-mu / cryptan1.rb
Created April 6, 2014 11:36
CodeIQ 781 クリプタン問題 : 問題1は文字等頻度計算+手動で作成した対応表による解読。 問題2は総当りで自動的に解読
#! /usr/bin/ruby
# CodeIQ 暗号解読クリプタン問題 暗号文1解析
# 入力
ctext = $<.map{|l| l.split.map{|h|h.to_i(16)}}.flatten
# ヒストグラム
hist=[0]*256
ctext.each{|d| hist[d]+=1}
@keiji-mu
keiji-mu / gemstring.c
Last active August 29, 2015 13:56
CodeIQ ジェムストリング問題 全ての場合を列挙する方法は時間がかかりすぎるので C を使った。
/* CodeIQ q684 gemstring */
/* 全ての場合を列挙する素朴な方法 */
/* ターゲットが指定されるとそれだけ表示する */
/* 非常に遅い */
#include <stdio.h>
#include <string.h>
#define MAXGEMS 32
#define MAXLINE 80
@keiji-mu
keiji-mu / tetrominobingo.rb
Created November 22, 2013 14:03
CodeIQ テトロミノ+ビンゴ! https://codeiq.jp/ace/nabetani_takenori/q524 の解答です。 コメントが「テトラ」ミノになっているのは数学ガールの影響?
#! /usr/bin/ruby
# テトラミノビンゴ
# 指定位置から連続する穴の位置リスト(4個以下なら正確)
def run(pos)
x,y = pos;
return [] if !$hole[pos] || $visit[pos]
$visit[pos]=1;
l = [pos]
l += run([x-1,y]) if x > 0 && l.size <= 4
@keiji-mu
keiji-mu / shortesttrip.rb
Created October 26, 2013 10:41
CodeIQ Shortest Trip 問題 https://codeiq.jp/ace/cielavenir/q495 の解答です。data1.in で2秒程度、data2.in では15分ほどかかります。orz 途中状態爆発を防ぐためにリミッタをつけてありますので最適解が得られるとは限りませんが、data2.in でも最適解になっていたようです。
#! /usr/bin/ruby
# 言語: Ruby 2.0.0
#------------------------
# 入力:data1.in
# 2020.811047
# 35.640485 140.063040
# 35.443708 139.638026
# 34.741327 137.791773
# 35.599629 138.517272
# 34.778815 136.908237
@keiji-mu
keiji-mu / pay.rb
Created October 25, 2013 15:59
CodeIQ 目指せお釣りマスター! https://codeiq.jp/ace/ozy/q477 の解答です
#! /usr/bin/ruby
# 動的計画法
# 支払い金種バリエーション(各金種でちょうど払うか全く払わないか選択)
MANEY=[1000,500,100,50,10,5,1]
GOODS=$<.map(&:to_i)
wallet=[1,0,0,0,0,0,0]
# ヒープ
# データ:[総時間, 財布のリスト, 未購入商品リスト, 支払いリスト]