Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =begin
- ENLEVEZ les delimiteurs du commentaire si vous voulez avoir les operateurs nand, nor
- class TrueClass
- def & y
- !(self && y); # nand
- end
- def | y
- !(self || y); # nor
- end
- end
- class FalseClass
- def & y
- !(self && y); # nand
- end
- def | y
- !(self || y); # nor
- end
- end
- # JUSTE POUR EVITER 1 ^ boolean
- class Fixnum
- def ^ y
- (self == 1) ^ y;
- end
- def & y
- (self == 1) & y;
- end
- def | y
- (self == 1) | y;
- end
- end
- =end
- begin
- puts 'Fait par Redouane ([email protected])'
- puts 'Entrez la fonction logique (variables a,b,c,d...)';
- signes = { '+' => '||','.'=>'&&'};
- inp = gets.downcase;
- expr = inp.gsub(/[+\.]/, signes);
- n = expr.scan(/[a-z]/).sort.last.ord - 96;
- names = (?a .. ?z).first(n);
- rows = [ "F = #{inp}"];
- rows << " #{names.join(' | ')} | F ";
- rows << ('-'*(4*n+3));
- f = -> t {
- t = t.map{|x| x == 1};
- eval(expr.gsub(/[a-z]/){|c| "t[#{c.ord-97}]"}.gsub(/[^\[1-9]0|^0/,'false')) ? 1 : 0;
- }
- (2**n).times{|i|
- s = i.to_s(2).rjust(n,?0);
- args = s.chars.map(&:to_i);
- rows << " #{args.join(' | ')} | #{f.(args)} ";
- };
- new_index = Dir.entries(?.).map{|v| v[/^TV (\d+)\.txt$/, 1].to_i}.max + 1;
- $filename = "TV #{new_index}.txt";
- txt = rows.join(?\n);
- puts txt;
- File.open($filename, ?w) do|f|
- f.write(txt);
- end;
- puts "\nFini, le fichier #{$filename} vient d'etre cree";
- rescue Exception => e
- p e.message;
- p e.backtrace;
- ensure
- gets;
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement