From 80dbb818a8556e4baedc9671e863f3fac0a2d6f6 Mon Sep 17 00:00:00 2001 From: FuryFire Date: Tue, 12 Apr 2011 14:12:02 +0200 Subject: [PATCH] Begun adding support for a global settings.yml file --- CT.rb | 90 ++++++++++++++++++++++----------------- ProjectEuler/005/desc.yml | 3 ++ ProjectEuler/005/solve.js | 11 +++++ ProjectEuler/006/desc.yml | 5 ++- ProjectEuler/006/solve.js | 9 ++++ ct.bat | 1 + settings.yml | 16 +++++++ 7 files changed, 94 insertions(+), 41 deletions(-) create mode 100644 ProjectEuler/005/solve.js create mode 100644 ProjectEuler/006/solve.js create mode 100644 settings.yml diff --git a/CT.rb b/CT.rb index 1a92f7b..d523abe 100644 --- a/CT.rb +++ b/CT.rb @@ -1,48 +1,58 @@ require "yaml" require 'erb' require 'open3' -cli = { 'php' => 'php', 'ruby' => 'ruby', 'javascript'=>'node', 'js'=>'node', 'c' => 'tcc -run'} +require 'pp' +require 'benchmark' +include Benchmark +cli = { 'php' => 'php', 'ruby' => 'ruby', 'lua'=> 'lua', 'javascript'=>'node', 'js'=>'node', 'c' => 'tcc -run'} +settings = YAML::load_file("settings.yml") + 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]) + +case ARGV[1] + when 'test' + if(problem['solutions']) + problem['solutions'].each do |sol| + if(cli[sol[1]['language']]) + puts "--------------\n|"+sol[0]+"\n--------------" + puts sol[1]['desc'] + parameter = (sol[1]['parameters']) ? " " + sol[1]['parameters'] : "" + stdin, stdout, stderr = Open3.popen3(cli[sol[1]['language']] + " "+ARGV[0]+"/"+sol[0] + parameter) + puts "Result: " + stdout.readlines[0] + + end end + else + puts "No solutions for said problem" end + + when 'table' + + require 'terminal-table' + files = Dir[ARGV[0]+"/**/*/desc.yml"] + files.sort + entry = [] + files.each do |file| + yaml = YAML::load_file(file) + nested = file.split('/') + count = 0 + if( yaml['solution'] and yaml['solutions']) + yaml['solutions'].each do |sol| + count += 1 + end + end + entry << {'title'=>yaml['title'],'code'=>nested[-2].to_s,'solved'=>count} + end + + rows = [] + entry.each do |e| + solvedstring = (e['solved'] == 0) ? "No" : "Yes("+e['solved'].to_s+")" + row = [e['code'],e['title'],solvedstring] + rows << row + end + table = Terminal::Table.new(:headings => ['Code','Title','Solved'],:rows => rows) + puts table else - puts "No solutions for said problem" - end -end - -if(ARGV[1] == 'table') - require 'terminal-table' - files = Dir[ARGV[0]+"/**/*/desc.yml"] - files.sort - entry = [] - files.each do |file| - yaml = YAML::load_file(file) - nested = file.split('/') - count = 0 - if( yaml['solution'] and yaml['solutions']) - yaml['solutions'].each do |sol| - count += 1 - end - end - entry << {'title'=>yaml['title'],'code'=>nested[-2].to_s,'solved'=>count} - end - - rows = [] - entry.each do |e| - solvedstring = (e['solved'] == 0) ? "No" : "Yes("+e['solved'].to_s+")" - row = [e['code'],e['title'],solvedstring] - rows << row - end - table = Terminal::Table.new(:headings => ['Code','Title','Solved'],:rows => rows) - puts table + output = ERB.new(IO.read('template.rt')) + puts output.result() end diff --git a/ProjectEuler/005/desc.yml b/ProjectEuler/005/desc.yml index 3fb5d6a..8c08dc6 100644 --- a/ProjectEuler/005/desc.yml +++ b/ProjectEuler/005/desc.yml @@ -15,3 +15,6 @@ solutions: solve.rb: desc: Basic solution in Ruby language: ruby + solve.js: + desc: Basic solution for NodeJS + language: js \ No newline at end of file diff --git a/ProjectEuler/005/solve.js b/ProjectEuler/005/solve.js new file mode 100644 index 0000000..fff96d5 --- /dev/null +++ b/ProjectEuler/005/solve.js @@ -0,0 +1,11 @@ +for(i=20;true;i+=20) { + div = 19; + + while(!(i % div)) { + div--; + if(div == 0) { + console.log( i ); + process.exit(0); + } + } +} diff --git a/ProjectEuler/006/desc.yml b/ProjectEuler/006/desc.yml index ecc50f8..c6fe462 100644 --- a/ProjectEuler/006/desc.yml +++ b/ProjectEuler/006/desc.yml @@ -21,4 +21,7 @@ solutions: language: ruby solve.c: desc: ANSI C solution (Tested with TCC) - language: c \ No newline at end of file + language: c + solve.js: + desc: Javascript solution for NodeJS + language: javascript \ No newline at end of file diff --git a/ProjectEuler/006/solve.js b/ProjectEuler/006/solve.js new file mode 100644 index 0000000..7b99ec6 --- /dev/null +++ b/ProjectEuler/006/solve.js @@ -0,0 +1,9 @@ +square = 0; +sum = 0; +for(num=1;num<101;num++) { + square += Math.pow(num,2); + sum += num; + +} +console.log( Math.pow(sum,2) - square); + diff --git a/ct.bat b/ct.bat index 0523b15..f4c1d84 100644 --- a/ct.bat +++ b/ct.bat @@ -1 +1,2 @@ +@ECHO OFF ruby CT.rb %1 %2 \ No newline at end of file diff --git a/settings.yml b/settings.yml new file mode 100644 index 0000000..e899d53 --- /dev/null +++ b/settings.yml @@ -0,0 +1,16 @@ +languages: + javascript: + command: node + ext: [js,javascript] + php: + command: php + ext: [php] + ruby: + command: ruby + ext: [ruby,rb] + tcc: + command: tcc -run + ext: [c] + lua: + command: lua + ext: [lua] \ No newline at end of file