bridge 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/VERSION +1 -1
  2. data/bridge.gemspec +54 -0
  3. data/lib/bridge.rb +22 -22
  4. data/test/test_bridge.rb +19 -19
  5. metadata +2 -1
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/bridge.gemspec ADDED
@@ -0,0 +1,54 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{bridge}
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jakub Kuźma"]
12
+ s.date = %q{2010-02-18}
13
+ s.description = %q{Useful contract bridge utilities - deal generator, id to deal and deal to id conversion}
14
+ s.email = %q{qoobaa+github@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "bridge.gemspec",
27
+ "lib/bridge.rb",
28
+ "test/helper.rb",
29
+ "test/test_bridge.rb"
30
+ ]
31
+ s.homepage = %q{http://github.com/qoobaa/bridge}
32
+ s.rdoc_options = ["--charset=UTF-8"]
33
+ s.require_paths = ["lib"]
34
+ s.rubygems_version = %q{1.3.5}
35
+ s.summary = %q{Contract bridge utilities}
36
+ s.test_files = [
37
+ "test/test_bridge.rb",
38
+ "test/helper.rb"
39
+ ]
40
+
41
+ if s.respond_to? :specification_version then
42
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
+ s.specification_version = 3
44
+
45
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
46
+ s.add_development_dependency(%q<test-unit>, [">= 2"])
47
+ else
48
+ s.add_dependency(%q<test-unit>, [">= 2"])
49
+ end
50
+ else
51
+ s.add_dependency(%q<test-unit>, [">= 2"])
52
+ end
53
+ end
54
+
data/lib/bridge.rb CHANGED
@@ -1,33 +1,33 @@
1
1
  module Bridge
2
2
 
3
- # Total number of possible deals in bridge
3
+ # Number of possible deals in bridge
4
4
  DEALS = 53_644_737_765_488_792_839_237_440_000
5
5
 
6
- # Array with cards in the bridge deck (from two to ace, four suits)
6
+ # Array with cards in the bridge deck (AKQJT98765432, four suits)
7
7
  DECK = %w(S H D C).inject([]) do |d, s|
8
8
  d += %w(A K Q J T 9 8 7 6 5 4 3 2).map { |c| c + s }
9
9
  end
10
10
 
11
- # Converts given number to deal (hash)
12
- def self.number_to_deal(number)
11
+ # Converts given id to deal (hash)
12
+ def self.id_to_deal(id)
13
13
  deal = { :n => [], :e => [], :s => [], :w => [] }
14
14
  k = DEALS
15
15
  DECK.each_with_index do |card, i|
16
16
  x = k * (13 - deal[:n].size) / (52 - i)
17
- if number < x
17
+ if id < x
18
18
  deal[:n] << card
19
19
  else
20
- number -= x
20
+ id -= x
21
21
  x = k * (13 - deal[:e].size) / (52 - i)
22
- if number < x
22
+ if id < x
23
23
  deal[:e] << card
24
24
  else
25
- number -= x
25
+ id -= x
26
26
  x = k * (13 - deal[:s].size) / (52 - i)
27
- if number < x
27
+ if id < x
28
28
  deal[:s] << card
29
29
  else
30
- number -= x
30
+ id -= x
31
31
  x = k * (13 - deal[:w].size) / (52 - i)
32
32
  deal[:w] << card
33
33
  end
@@ -38,20 +38,20 @@ module Bridge
38
38
  deal
39
39
  end
40
40
 
41
- # Converts given deal (hash) to number
42
- def self.deal_to_number(d)
43
- k = DEALS; number = 0
41
+ # Converts given deal (hash) to id
42
+ def self.deal_to_id(d)
43
+ k = DEALS; id = 0
44
44
  deal = { :n => d[:n].dup, :e => d[:e].dup, :s => d[:s].dup, :w => d[:w].dup }
45
45
  DECK.each_with_index do |card, i|
46
46
  x = k * deal[:n].size / (52 - i)
47
47
  unless deal[:n].delete(card)
48
- number += x
48
+ id += x
49
49
  x = k * deal[:e].size / (52 - i)
50
50
  unless deal[:e].delete(card)
51
- number += x
51
+ id += x
52
52
  x = k * deal[:s].size / (52 - i)
53
53
  unless deal[:s].delete(card)
54
- number += x
54
+ id += x
55
55
  x = k * deal[:w].size / (52 - i)
56
56
  deal[:w].delete(card)
57
57
  end
@@ -59,21 +59,21 @@ module Bridge
59
59
  end
60
60
  k = x
61
61
  end
62
- number
62
+ id
63
63
  end
64
64
 
65
- # Returns a random deal number
66
- def self.random_deal_number
65
+ # Returns a random deal id
66
+ def self.random_deal_id
67
67
  rand(DEALS)
68
68
  end
69
69
 
70
70
  # Returns a random deal
71
71
  def self.random_deal
72
- number_to_deal(random_deal_number)
72
+ id_to_deal(random_deal_id)
73
73
  end
74
74
 
75
- # Checks if the given number is valid deal number
76
- def self.deal_number?(n)
75
+ # Checks if the given number is valid deal id
76
+ def self.deal_id?(n)
77
77
  (0..DEALS - 1).include?(n)
78
78
  end
79
79
 
data/test/test_bridge.rb CHANGED
@@ -2,35 +2,35 @@ require 'helper'
2
2
 
3
3
  class TestBridge < Test::Unit::TestCase
4
4
  test "first deal conversion" do
5
- number = 0
6
- deal = Bridge.number_to_deal(number)
5
+ id = 0
6
+ deal = Bridge.id_to_deal(id)
7
7
  assert Bridge.deal?(deal)
8
8
  assert_equal %w(AS KS QS JS TS 9S 8S 7S 6S 5S 4S 3S 2S), deal[:n]
9
9
  assert_equal %w(AH KH QH JH TH 9H 8H 7H 6H 5H 4H 3H 2H), deal[:e]
10
10
  assert_equal %w(AD KD QD JD TD 9D 8D 7D 6D 5D 4D 3D 2D), deal[:s]
11
11
  assert_equal %w(AC KC QC JC TC 9C 8C 7C 6C 5C 4C 3C 2C), deal[:w]
12
- assert_equal number, Bridge.deal_to_number(deal)
12
+ assert_equal id, Bridge.deal_to_id(deal)
13
13
  end
14
14
 
15
15
  test "last deal conversion" do
16
- number = Bridge::DEALS - 1
17
- deal = Bridge.number_to_deal(number)
16
+ id = Bridge::DEALS - 1
17
+ deal = Bridge.id_to_deal(id)
18
18
  assert Bridge.deal?(deal)
19
19
  assert_equal %w(AC KC QC JC TC 9C 8C 7C 6C 5C 4C 3C 2C), deal[:n]
20
20
  assert_equal %w(AD KD QD JD TD 9D 8D 7D 6D 5D 4D 3D 2D), deal[:e]
21
21
  assert_equal %w(AH KH QH JH TH 9H 8H 7H 6H 5H 4H 3H 2H), deal[:s]
22
22
  assert_equal %w(AS KS QS JS TS 9S 8S 7S 6S 5S 4S 3S 2S), deal[:w]
23
- assert_equal number, Bridge.deal_to_number(deal)
23
+ assert_equal id, Bridge.deal_to_id(deal)
24
24
  end
25
25
 
26
26
  test "deal no 1 000 000 000" do
27
- number = 1_000_000_000
28
- deal = Bridge.number_to_deal(number)
27
+ id = 1_000_000_000
28
+ deal = Bridge.id_to_deal(id)
29
29
  assert Bridge.deal?(deal)
30
- assert_equal number, Bridge.deal_to_number(deal)
30
+ assert_equal id, Bridge.deal_to_id(deal)
31
31
  end
32
32
 
33
- test "sample deal to number conversion" do
33
+ test "sample deal to id conversion" do
34
34
  deal = {
35
35
  :n => %w(AS KS QS JS AH KH QH AD KD QD AC KC QC),
36
36
  :e => %w(TS 9S 8S 7S 6S 5S 4S 3S 2S JH TH 9H 8H),
@@ -38,8 +38,8 @@ class TestBridge < Test::Unit::TestCase
38
38
  :w => %w(4D 3D 2D JC TC 9C 8C 7C 6C 5C 4C 3C 2C)
39
39
  }
40
40
  assert Bridge.deal?(deal)
41
- number = Bridge.deal_to_number(deal)
42
- assert_equal deal, Bridge.number_to_deal(number)
41
+ id = Bridge.deal_to_id(deal)
42
+ assert_equal deal, Bridge.id_to_deal(id)
43
43
  end
44
44
 
45
45
  test "deal with doubled cards is not valid deal" do
@@ -62,17 +62,17 @@ class TestBridge < Test::Unit::TestCase
62
62
  assert_false Bridge.deal?(deal)
63
63
  end
64
64
 
65
- test "negative number is not valid deal_number" do
66
- assert_false Bridge.deal_number?(-1)
65
+ test "negative number is not valid deal id" do
66
+ assert_false Bridge.deal_id?(-1)
67
67
  end
68
68
 
69
- test "total number of possible deals is not valid deal_number" do
70
- assert_false Bridge.deal_number?(Bridge::DEALS)
69
+ test "number of possible bridge deals is not valid deal id" do
70
+ assert_false Bridge.deal_id?(Bridge::DEALS)
71
71
  end
72
72
 
73
- test "random deal number is valid deal number" do
74
- number = Bridge.random_deal_number
75
- assert Bridge.deal_number?(number)
73
+ test "random deal id is valid deal id" do
74
+ id = Bridge.random_deal_id
75
+ assert Bridge.deal_id?(id)
76
76
  end
77
77
 
78
78
  test "random deal is valid deal" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bridge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Jakub Ku\xC5\xBAma"
@@ -38,6 +38,7 @@ files:
38
38
  - README.rdoc
39
39
  - Rakefile
40
40
  - VERSION
41
+ - bridge.gemspec
41
42
  - lib/bridge.rb
42
43
  - test/helper.rb
43
44
  - test/test_bridge.rb