mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 fd81221a8e
			
		
	
	
		fd81221a8e
		
	
	
	
	
		
			
			git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			992 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			992 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| #!/usr/bin/ruby
 | |
| # -*- mode: ruby -*-
 | |
| # $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
 | |
| # http://www.bagley.org/~doug/shootout/
 | |
| # with help from Aristarkh Zagorodnikov
 | |
| 
 | |
| class Toggle
 | |
|     def initialize(start_state)
 | |
|         @bool = start_state
 | |
|     end
 | |
| 
 | |
|     def value
 | |
|         @bool
 | |
|     end
 | |
| 
 | |
|     def activate
 | |
|         @bool = !@bool
 | |
|         self
 | |
|     end
 | |
| end
 | |
| 
 | |
| class NthToggle < Toggle
 | |
|     def initialize(start_state, max_counter)
 | |
|         super start_state
 | |
|         @count_max = max_counter
 | |
|         @counter = 0
 | |
|     end
 | |
| 
 | |
|     def activate
 | |
|         @counter += 1
 | |
|         if @counter >= @count_max
 | |
|             @bool = !@bool
 | |
|             @counter = 0
 | |
|         end
 | |
|         self
 | |
|     end
 | |
| end
 | |
| 
 | |
| n = 1500000 # (ARGV.shift || 1).to_i
 | |
| 
 | |
| toggle = Toggle.new 1
 | |
| 5.times do
 | |
|     toggle.activate.value ? 'true' : 'false'
 | |
| end
 | |
| n.times do
 | |
|     toggle = Toggle.new 1
 | |
| end
 | |
| 
 | |
| ntoggle = NthToggle.new 1, 3
 | |
| 8.times do
 | |
|     ntoggle.activate.value ? 'true' : 'false'
 | |
| end
 | |
| n.times do
 | |
|     ntoggle = NthToggle.new 1, 3
 | |
| end
 | |
| 
 |