From b25e8b7c119d15bc2665048dc94f83351ca419fa Mon Sep 17 00:00:00 2001 From: FuryFire Date: Wed, 11 Apr 2012 14:49:45 +0200 Subject: [PATCH] Added a few lua solutions - Updated the CT script to include additional parameters --- CT.rb | 19 +++++++++++++++++-- ProjectEuler/001/desc.yml | 3 +++ ProjectEuler/001/solve.lua | 7 +++++++ ProjectEuler/002/desc.yml | 5 ++++- ProjectEuler/002/solve.js | 2 +- ProjectEuler/002/solve.lua | 11 +++++++++++ ProjectEuler/005/solve.rb | 19 +++++++++++-------- ProjectEuler/006/desc.yml | 2 +- ProjectEuler/008/desc.yml | 4 +++- ProjectEuler/010/desc.yml | 2 +- ProjectEuler/011/desc.yml | 4 +++- ProjectEuler/013/desc.yml | 2 ++ ProjectEuler/018/desc.yml | 2 ++ ProjectEuler/022/desc.yml | 3 ++- 14 files changed, 68 insertions(+), 17 deletions(-) create mode 100644 ProjectEuler/001/solve.lua create mode 100644 ProjectEuler/002/solve.lua diff --git a/CT.rb b/CT.rb index 8abbc5e..1a92f7b 100644 --- a/CT.rb +++ b/CT.rb @@ -1,9 +1,24 @@ require "yaml" require 'erb' - +require 'open3' +cli = { 'php' => 'php', 'ruby' => 'ruby', 'javascript'=>'node', 'js'=>'node', 'c' => 'tcc -run'} problem = YAML::load_file(ARGV[0] + "/desc.yml") output = ERB.new(IO.read('template.rt')) puts output.result() +if(ARGV[1] == 'test') + if(problem['solutions']) + problem['solutions'].each do |sol| + if(cli[sol[1]['language']]) + parameter = (sol[1]['parameters']) ? " " + sol[1]['parameters'] : "" + stdin, stdout, stderr = Open3.popen3(cli[sol[1]['language']] + " "+ARGV[0]+"/"+sol[0] + parameter) + puts sol[0]+": " +stdout.readlines[0] + #Open3#popen3(cli[sol[1]['language']] + " "+ARGV[0]+"/"+sol[0]) + end + end + else + puts "No solutions for said problem" + end +end if(ARGV[1] == 'table') require 'terminal-table' @@ -30,4 +45,4 @@ if(ARGV[1] == 'table') end table = Terminal::Table.new(:headings => ['Code','Title','Solved'],:rows => rows) puts table -end \ No newline at end of file +end diff --git a/ProjectEuler/001/desc.yml b/ProjectEuler/001/desc.yml index 0e70c8f..d6a80f1 100644 --- a/ProjectEuler/001/desc.yml +++ b/ProjectEuler/001/desc.yml @@ -21,3 +21,6 @@ solutions: solve.js: desc: NodeJS solution language: javascript + solve.lua: + desc: Basic solution + language: lua diff --git a/ProjectEuler/001/solve.lua b/ProjectEuler/001/solve.lua new file mode 100644 index 0000000..87d3407 --- /dev/null +++ b/ProjectEuler/001/solve.lua @@ -0,0 +1,7 @@ +sum = 0 +for i=1,999 do + if i % 3 == 0 or i % 5 == 0 then + sum = sum + i + end +end +print(sum) \ No newline at end of file diff --git a/ProjectEuler/002/desc.yml b/ProjectEuler/002/desc.yml index 463cba1..78c1115 100644 --- a/ProjectEuler/002/desc.yml +++ b/ProjectEuler/002/desc.yml @@ -21,4 +21,7 @@ solutions: language: c solve.js: desc: NodeJS solution - language: javascript \ No newline at end of file + language: javascript + solve.lua: + desc: Basic solution + language: lua \ No newline at end of file diff --git a/ProjectEuler/002/solve.js b/ProjectEuler/002/solve.js index 4a08c7a..bb92f2b 100644 --- a/ProjectEuler/002/solve.js +++ b/ProjectEuler/002/solve.js @@ -5,7 +5,7 @@ fib = new Array( 1, 2, 3 ); fib[2] = fib[0] + fib[1]; if(fib[2] % 2 == 0) sum += fib[2]; - fib[0] = fib[1]; + fib[0] = fib[1]; fib[1] = fib[2]; } console.log(sum ); diff --git a/ProjectEuler/002/solve.lua b/ProjectEuler/002/solve.lua new file mode 100644 index 0000000..4fa239d --- /dev/null +++ b/ProjectEuler/002/solve.lua @@ -0,0 +1,11 @@ +sum = 2 +fib = {1, 2, 3} +while fib[2] < 4000000 do + fib[3] = fib[1] + fib[2] + if(fib[3] % 2 == 0) then + sum = sum + fib[3] + end + fib[1] = fib[2] + fib[2] = fib[3] +end +print (sum ) diff --git a/ProjectEuler/005/solve.rb b/ProjectEuler/005/solve.rb index 17651b4..c43f8e9 100644 --- a/ProjectEuler/005/solve.rb +++ b/ProjectEuler/005/solve.rb @@ -1,10 +1,13 @@ -max = 0; -(100..1000).each do |num1| - (100..1000).each do |num2| - sum = num1 * num2 - if( sum > max and sum.to_s.reverse == sum.to_s) - max = sum +i = 0 +while (true) +i = i + 20 +div = 19 + + while((i % div) == 0) + div = div - 1 + if(div == 0) then + puts i + exit end end -end -print max \ No newline at end of file +end \ No newline at end of file diff --git a/ProjectEuler/006/desc.yml b/ProjectEuler/006/desc.yml index c5869c3..ecc50f8 100644 --- a/ProjectEuler/006/desc.yml +++ b/ProjectEuler/006/desc.yml @@ -19,6 +19,6 @@ solutions: solve.rb: desc: Basic Ruby solution language: ruby - solve.rb: + solve.c: desc: ANSI C solution (Tested with TCC) language: c \ No newline at end of file diff --git a/ProjectEuler/008/desc.yml b/ProjectEuler/008/desc.yml index 91cc059..d629e5a 100644 --- a/ProjectEuler/008/desc.yml +++ b/ProjectEuler/008/desc.yml @@ -11,6 +11,8 @@ solutions: solve.php: desc: Expects the haystack as stdin with optional newlines language: php + parameters: < ProjectEuler\008\input solve.rb: desc: Expects the haystack as stdin with optional newlines - language: ruby \ No newline at end of file + language: ruby + parameters: < ProjectEuler\008\input \ No newline at end of file diff --git a/ProjectEuler/010/desc.yml b/ProjectEuler/010/desc.yml index d5233dd..2664d9b 100644 --- a/ProjectEuler/010/desc.yml +++ b/ProjectEuler/010/desc.yml @@ -16,5 +16,5 @@ solutions: desc: Basic solution language: ruby solve.c: - desc: ANSI C solution compiled with gcc-4.3.4 + desc: C solution compiled with gcc-4.3.4 (Support for long long needed) language: c \ No newline at end of file diff --git a/ProjectEuler/011/desc.yml b/ProjectEuler/011/desc.yml index 459a61a..3451c02 100644 --- a/ProjectEuler/011/desc.yml +++ b/ProjectEuler/011/desc.yml @@ -13,6 +13,8 @@ solutions: solve.php: desc: Expects the matrix as stdin language: php + parameters: < ProjectEuler\011\input solve.rb: desc: Expects the matrix as stdin - language: ruby \ No newline at end of file + language: ruby + parameters: < ProjectEuler\011\input \ No newline at end of file diff --git a/ProjectEuler/013/desc.yml b/ProjectEuler/013/desc.yml index c7eedfd..ba95aa6 100644 --- a/ProjectEuler/013/desc.yml +++ b/ProjectEuler/013/desc.yml @@ -12,6 +12,8 @@ solutions: solve.php: desc: Expects input on STDIN language: php + parameters: < ProjectEuler\013\input solve.rb: desc: Expects input on STDIN language: ruby + parameters: < ProjectEuler\013\input diff --git a/ProjectEuler/018/desc.yml b/ProjectEuler/018/desc.yml index 4ac3582..9323d44 100644 --- a/ProjectEuler/018/desc.yml +++ b/ProjectEuler/018/desc.yml @@ -18,6 +18,8 @@ solutions: solve.php: desc: Basic solution language: php + parameters: < ProjectEuler\018\input solve.rb: desc: Basic solution language: ruby + parameters: < ProjectEuler\018\input \ No newline at end of file diff --git a/ProjectEuler/022/desc.yml b/ProjectEuler/022/desc.yml index 670cce6..b6c0981 100644 --- a/ProjectEuler/022/desc.yml +++ b/ProjectEuler/022/desc.yml @@ -11,4 +11,5 @@ solution: Bruteforce solutions: solve.php: desc: Expects data on STDIN - language: php \ No newline at end of file + language: php + parameters: < ProjectEuler\022\input \ No newline at end of file