結果

問題 No.8126 Brainfxxk easy
コンテスト
ユーザー ciel
提出日時 2026-07-27 10:15:07
言語 Ruby
(4.0.2)
コンパイル:
ruby -w -c _filename_
実行:
ruby _filename_
結果
AC  
実行時間 51 ms / 2,000 ms
+ 846µs
コード長 1,378 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 9 ms
コンパイル使用メモリ 8,832 KB
実行使用メモリ 14,592 KB
最終ジャッジ日時 2026-07-27 10:15:18
合計ジャッジ時間 1,689 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 9
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #
raw source code

#!/usr/bin/ruby

class BF
	def initialize(s,n=99999)
		@inp=s
		@buffer=[0]*n
		@ptr=0
		@inpptr=0
		@inst=0
		@n=n
	end
	attr_reader :buffer
	def execute(s)
		i=0
		while i<s.size
			if s[i]=='>'
				@ptr+=1;@inst+=1
				if @ptr<0 || @n<=@ptr
					raise
				end
			elsif s[i]=='<'
				@ptr-=1;@inst+=1
				if @ptr<0 || @n<=@ptr
					raise
				end
			elsif s[i]=='+'
				#@buffer[@ptr]=(@buffer[@ptr]+1)%256;@inst+=1
				@buffer[@ptr]=(@buffer[@ptr]+1);@inst+=1
			elsif s[i]=='-'
				#@buffer[@ptr]=(@buffer[@ptr]-1)%256;@inst+=1
				@buffer[@ptr]=(@buffer[@ptr]-1);@inst+=1
			elsif s[i]=='.'
				@inst+=1
				if @inst>100000
					raise
				end
				print(@buffer[@ptr].chr)
			elsif s[i]==','
				@inst+=1
				if @inst>100000
					raise
				end
				@buffer[@ptr]=@inp[@inpptr].ord;@inpptr+=1
			elsif s[i]=='['
				@inst+=1
				if @buffer[@ptr]!=0
					execute(s[i+1..-1])
				end
				marker=1
				while marker>0
					if s[i+1]=='['
						marker+=1
					elsif s[i+1]==']'
						marker-=1
					end
					i+=1
				end
			elsif s[i]==']'
				@inst+=1
				if @buffer[@ptr]!=0
					@inst+=1
					i=-1
				else
					return
				end
			end
			i+=1
			if @inst>100000
				raise
			end
		end
	end
end

# also see hackerrank/brainf-k-interpreter-fp.rb

n=gets.to_i
bf=BF.new('', n)
begin
	bf.execute(gets)
	puts bf.buffer*' '
rescue
	# puts 'PROCESS TIME OUT. KILLED!!!'
	puts :error
end
0