59 lines
1.3 KiB
Ruby
59 lines
1.3 KiB
Ruby
tmpl = <<END
|
|
111111100010101111111
|
|
100000101000001000001
|
|
101110100001101011101
|
|
101110101100101011101
|
|
101110101101001011101
|
|
100000100110101000001
|
|
111111101010101111111
|
|
000000001100100000000
|
|
010111101010111011010
|
|
100101011011110011100
|
|
011101111111000101101
|
|
001111011010111110100
|
|
111001101000111110101
|
|
000000001011111110100
|
|
111111100010100110110
|
|
100000101011001010011
|
|
101110101111111100111
|
|
101110101100111111100
|
|
101110100101110001111
|
|
100000101111100010110
|
|
111111100110110110100
|
|
END
|
|
|
|
tmpl = "\n" * 8 + tmpl.lines.flat_map do |l|
|
|
l = l.chomp.gsub(/./) { $& * 4 } + "\n"
|
|
[l, l]
|
|
end.join + "\n" * 8
|
|
tmpl.gsub!(/^/, "0" * 4 * 4)
|
|
tmpl.gsub!(/0+$/, "")
|
|
tmpl.gsub!("1\n") { "\\\n" }
|
|
tmpl.tr!("10", "# ")
|
|
|
|
Code = File.read(ARGV[0]).chomp[/"(.*)"/, 1].tr(" ", "Y")
|
|
|
|
code = File.read("prog-tmpl.c")
|
|
code.gsub!('"CODE"') { "\"\\\"" + Code + '"' }
|
|
code.gsub!('INDX', (Code.index("#include") - 1 + 1).to_s)
|
|
code.gsub!(/^\s+/, "")
|
|
code.gsub!("\n", "")
|
|
|
|
#ode = "#include<stdio.h>/*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/" + code
|
|
code = "#include<stdio.h>/*IOCCC201420142014IOCCC2014IOCCC2014IOCCC201*/" + code
|
|
|
|
tmpl[(tmpl =~ /(\\)$/m)] = "#"
|
|
|
|
count = 0
|
|
code = tmpl.gsub(/./) do
|
|
if $& == ?# || ($& != " " && count == 3)
|
|
c = code.slice!(0, 1)
|
|
count += 1 if c == ?"
|
|
c
|
|
else
|
|
$&
|
|
end
|
|
end
|
|
|
|
File.write(ARGV[1], code)
|