prct5 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/spec/examen.rb ADDED
@@ -0,0 +1,63 @@
1
+ require 'multirespuesta'
2
+ require 'verdadero_falso'
3
+ require 'lista_enlazada'
4
+
5
+ class Examen < ListaEnlazada
6
+ def initialize(vector_preguntas)
7
+ super(vector_preguntas)
8
+ @respondido = false
9
+ if vector_preguntas.kind_of? Array
10
+ @n_preguntas = vector_preguntas.length
11
+ else
12
+ @n_preguntas = 1
13
+ end
14
+ @respuestas = []
15
+ end
16
+ def print
17
+ while @actual != nil
18
+ @actual.val.to_s
19
+ @actual = @actual.siguiente
20
+ end
21
+ @actual = @head
22
+ end
23
+ def print_node(val)
24
+ for i in 0..val do
25
+ @actual = @actual.siguiente
26
+ end
27
+ @actual.val.to_s
28
+ @actual = @head
29
+ end
30
+ def getCorrecta(node)
31
+ return node.val.correcta
32
+ end
33
+ def getPreg(node)
34
+ return node.val.preg
35
+ end
36
+ def getNum(node)
37
+ return node.val.num
38
+ end
39
+ def responder(value)
40
+ print_node(value)
41
+ print "Introduzca su respuesta -> "
42
+ STDOUT.flush
43
+ resp = gets.chomp
44
+ if resp == @actual.val.correcta
45
+ return true
46
+ else
47
+ return false
48
+ end
49
+ end
50
+ def my_while(condicion, &bloque)
51
+ while condicion.call
52
+ bloque.call
53
+ end
54
+ end
55
+ def inverse
56
+ aux = @tail
57
+ my_while -> {aux != nil} do
58
+ aux.val.to_s
59
+ aux = aux.prev
60
+ end
61
+ return true
62
+ end
63
+ end
data/spec/interfaz.rb ADDED
@@ -0,0 +1,48 @@
1
+ require 'examen'
2
+
3
+ class Interfaz
4
+ def initialize(vector_preguntas)
5
+ @respondido = false
6
+ @n_preguntas = vector_preguntas.length
7
+ @exam = Examen.new(vector_preguntas)
8
+ @respuestas = []
9
+ end
10
+ def muestra_menu
11
+ while true do
12
+ puts "Prueba Examen"
13
+ puts "Seleccione una opcion del menu:"
14
+ puts "1) Mostrar examen"
15
+ puts "2) Responder examen"
16
+ if @respondido == true
17
+ puts "3) Mostrar calificacion"
18
+ end
19
+ puts "0) Salir"
20
+ print "-> "
21
+ STDOUT.flush
22
+ a = gets.chomp
23
+ case a
24
+ when "1"
25
+ @exam.print
26
+ when "2"
27
+ for i in 0..@n_preguntas do
28
+ @respuestas[i] = @exam.responder(i)
29
+ end
30
+ @respondido = true
31
+ when "3"
32
+ a = 0
33
+ puts "Calificacion"
34
+ for i in 0..@n_preguntas do
35
+ if @respuestas[i] == true
36
+ puts "#{i}) Correcta"
37
+ a = a+1
38
+ else
39
+ puts "#{i}) Incorrecta"
40
+ end
41
+ puts "Tu puntuacion total es de #{(a/n_preguntas)*10}"
42
+ end
43
+ when 0
44
+ exit
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,136 @@
1
+ class Nodo
2
+ attr_reader :val, :siguiente, :prev
3
+ attr_writer :val, :siguiente, :prev
4
+ def initialize (val,sig,prev)
5
+ @val = val
6
+ @siguiente = sig
7
+ @prev = prev
8
+ end
9
+ end
10
+
11
+ class ListaEnlazada
12
+ include Enumerable
13
+ attr_reader :head, :tail
14
+ attr_writer :head, :tail
15
+
16
+ def <=> (anOther)
17
+ @actual.val <=> anOther.actual.val
18
+ end
19
+ def each
20
+ while @actual != nil do
21
+ yield @actual.val
22
+ @actual = @actual.siguiente
23
+ end
24
+ @actual = @head
25
+ end
26
+ def initialize (entrada)
27
+ @size = 0
28
+
29
+ @actual = Nodo.new(nil,nil,nil)
30
+
31
+ @head = Nodo.new(nil,nil,nil)
32
+ @tail = Nodo.new(nil,nil,nil)
33
+ @head = @tail
34
+ @tail = @head
35
+ push(entrada)
36
+
37
+ @actual = @head
38
+ end
39
+ def pop
40
+ aux = @head.val
41
+ @head = @head.siguiente
42
+ @size = @size-1
43
+ return aux
44
+ end
45
+ def pop_f
46
+ aux = @tail.val
47
+ @tail = @tail.siguiente
48
+ @size = @size-1
49
+ return aux
50
+ end
51
+ def push (val)
52
+ if val.instance_of? Array
53
+ for i in 0..val.length do
54
+ # (0..(val.length)).each do |i|
55
+ aux = Nodo.new(val[i],nil,nil)
56
+ if((@head == nil) and (@tail == nil))
57
+ @head = aux
58
+ @tail = @head
59
+ @size = @size + 1
60
+ else
61
+ @tail.siguiente = aux
62
+ aux.prev = @tail
63
+ @tail = aux
64
+ @size = @size + 1
65
+ end
66
+ end
67
+ else
68
+ aux = Nodo.new(val,nil,nil)
69
+ if((@head == nil) and (@tail == nil))
70
+ @head = aux
71
+ @tail = @head
72
+ @size = @size + 1
73
+ else
74
+ @tail.siguiente = aux
75
+ aux.prev = @tail
76
+ @tail = aux
77
+ @size = @size + 1
78
+ end
79
+ end
80
+ return true
81
+ end
82
+ def push_i (val)
83
+ if val.instance_of? Array
84
+ for i in 0..val.length do
85
+ # (0..(val.length)).each do |i|
86
+ aux = Nodo.new(val[i],nil,nil)
87
+ if((@head == nil) and (@tail == nil))
88
+ @head = aux
89
+ @tail = @head
90
+ @size = @size + 1
91
+ else
92
+ @head.prev = aux
93
+ aux.siguiente = @head
94
+ @head = aux
95
+ @size = @size + 1
96
+ end
97
+ end
98
+ else
99
+ aux = Nodo.new(val,nil,nil)
100
+ if((@head == nil) and (@tail == nil))
101
+ @head = aux
102
+ @tail = @head
103
+ @size = @size + 1
104
+ else
105
+ @head.prev = aux
106
+ aux.siguiente = @head
107
+ @head = aux
108
+ @size = @size + 1
109
+ end
110
+ end
111
+ return true
112
+ end
113
+ def imprime(nodo)
114
+ if (nodo != nil)
115
+ print "#{nodo.val} "
116
+ imprime(nodo.siguiente)
117
+ end
118
+ end
119
+ def forPrint
120
+ imprime(@head)
121
+ puts ""
122
+ end
123
+ def my_while(condicion, &bloque)
124
+ while condicion.call
125
+ bloque.call
126
+ end
127
+ end
128
+ def inverse
129
+ aux = @tail
130
+ my_while -> {aux != nil} do
131
+ print "#{aux.val} "
132
+ aux = aux.prev
133
+ end
134
+ puts ""
135
+ end
136
+ end
@@ -0,0 +1,36 @@
1
+ require 'multirespuesta'
2
+ require 'lista_enlazada'
3
+
4
+ describe MultiRespuesta do
5
+ before :each do
6
+ @resp = [5]
7
+ pregunta1 = "Cual es la salida del siguiente codigo en ruby?\n\tclass Xyz\n\t\tdef pots\n\t\t\t@nice\n\t\tend?\n\tend?\n\txyz = Xyz.new?\n\tp xyz.pots"
8
+ pregunta2 = "La siguiente definicion de un hash en Ruby es valida:\n\thash_raro = {\n\t\t[1,2,3] => Object.new(),\n\t\tHash.new => :toto\n\t}"
9
+ pregunta3 = "Cual es la salida del siguiente codigo Ruby?\n\tclass Array\n\t\tdef say_hi\n\t\t\t\"Hey!\"\n\t\tend\n\tend\n\tp [1, \"bob\"].say_hi"
10
+ pregunta4 = "Cual es el tipo de objeto en el siguiente codigo Ruby?\n\tclass Objeto\n\tend"
11
+ pregunta5 = "Es apropiado que una clase Tablero herede de una clase Juego"
12
+ preguntas = [pregunta1,pregunta2,pregunta3,pregunta4,pregunta5]
13
+ numeros = [4,2,4,4,2]
14
+ respuestas1 = ["#<Xyz:0xa000208>","nil","0","Ninguna de las anteriores"]
15
+ respuestas2 = ["Cierto","Falso"]
16
+ respuestas3 = ["1","Bob","HEY!","Ninguna de las anteriores"]
17
+ respuestas4 = ["Una instancia de la clase Class","Una constante","Un objeto","Ninguna de las anteriores"]
18
+ respuestas5 = ["Cierto","Falso"]
19
+ for i in 0..@resp.length
20
+ @resp[i] = MultiRespuesta.new("#{i}.-)#{preguntas[i]}",numeros[i],nil)
21
+ case i
22
+ when 1
23
+ @resp[i].introducir_resp(respuestas1)
24
+ when 2
25
+ @resp[i].introducir_resp(respuestas2)
26
+ when 3
27
+ @resp[i].introducir_resp(respuestas3)
28
+ when 4
29
+ @resp[i].introducir_resp(respuestas4)
30
+ when 5
31
+ @resp[i].introducir_resp(respuestas5)
32
+ end
33
+ end
34
+ @lista = ListaEnlazada.new(@resp)
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ class MultiRespuesta
2
+ include Comparable
3
+ attr_reader :preg, :num, :resp, :correcta
4
+ attr_writer :preg, :num, :resp, :correcta
5
+ def <=> (anOther)
6
+ @num <=> anOther.num
7
+ end
8
+ def == (anOther)
9
+ @num == anOther.num && @preg == anOther.preg
10
+ end
11
+ def initialize(preg,num,correcta)
12
+ @resp = []
13
+ @num = num
14
+ @preg = preg
15
+ @correcta = correcta
16
+ end
17
+ def introducir_resp(resp)
18
+ for i in 0..(@num.to_i - 1)
19
+ @resp[i] = resp[i]
20
+ end
21
+ end
22
+ def to_s
23
+ puts "#{@preg}?"
24
+ for i in 0..(@num-1) do
25
+ puts"#{i+1})#{@resp[i]}"
26
+ end
27
+ end
28
+ def correccion(respuesta_usuario)
29
+ if(respuesta_usuario == @correcta)
30
+ return true
31
+ else
32
+ return false
33
+ end
34
+ end
35
+
36
+ end
data/spec/node_spec.rb ADDED
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+ require 'lista_enlazada'
3
+
4
+ describe ListaEnlazada do
5
+ before :each do
6
+ a = [3,5,6,7]
7
+ @nodo2 = Nodo.new(5,nil,nil)
8
+ @nodo1 = Nodo.new(3,@nodo2,nil)
9
+ @lista = ListaEnlazada.new(3)
10
+ end
11
+ describe "Valor de nodo1 = 3" do
12
+ it "Valor de nodo1 correcto" do
13
+ @nodo1.val.should eq(3)
14
+ end
15
+ end
16
+ describe "Nodo siguiente a nodo1 = nodo2" do
17
+ it "Nodo siguiente correcto" do
18
+ @nodo1.siguiente.should eq(@nodo2)
19
+ end
20
+ end
21
+ describe "Insercion de varios elementos" do
22
+ it "Insercion multiple correcta" do
23
+ a = [1,2,3]
24
+ @lista.push(a).should eq(true)
25
+ end
26
+ end
27
+ describe "Insercion de un elemento" do
28
+ it "Insercion simple correcta" do
29
+ @lista.push(1).should eq(true)
30
+ end
31
+ end
32
+ describe "Extraccion de un elemento" do
33
+ it "Extraccion simple correcta" do
34
+ @lista.pop.should eq(nil)
35
+ end
36
+ end
37
+ describe "Consulta de cabeza" do
38
+ it "Consulta de cabeza correcta" do
39
+ @lista.head.val.should eq(nil)
40
+ end
41
+ end
42
+ end
43
+
44
+ #module Enumerable
45
+ # describe "Enumerable" do
46
+ # it "Funciona collect" do
47
+ # @lista.collect{ |i| i.to_s + "x"}.should eq('3x')
48
+ # end
49
+ # it "Funciona sort" do
50
+ # @lista.sort.should eq(3)
51
+ # end
52
+ # it "Funciona max" do
53
+ # @lista.max.should eq(3)
54
+ # end
55
+ # it "Funciona min" do
56
+ # @lista.min.should eq (3)
57
+ # end
58
+ # end
59
+ #end
60
+
61
+ #describe "prueba" do
62
+ #module Enumerable
63
+ #By default is included in Array class
64
+ #r = [1,2,3,4,5,6].each{ |i| puts i}
65
+ #
66
+ #puts r
67
+ #
68
+ #r = [1,2,3,4,5,6].collect{ |i| i.to_s + "x"}
69
+ #
70
+ #puts r
71
+ #
72
+ #r = [1,2,3,4,5,6].detect{ |i| i.between?(2,3)}
73
+ #
74
+ #puts r
75
+ #
76
+ #r = [1,2,3,4,5,6].select{ |i| i.between?(3,5)}
77
+ #
78
+ #puts r
79
+ #
80
+ #r = [2,1,6,5,4,3].sort
81
+ #
82
+ #puts r
83
+ #
84
+ #r = [2,1,6,5,4,3].max
85
+ #
86
+ #puts r
87
+ #
88
+ #r = [2,1,6,5,4,3].min
89
+ #
90
+ #puts r
91
+ #end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+ require 'prct5'
3
+ require 'multirespuesta'
4
+
5
+ describe MultiRespuesta do
6
+ before :each do
7
+ @multi = MultiRespuesta.new("Como me llamo",4,3)
8
+ @multi2 = MultiRespuesta.new("Eres canario",2,1)
9
+ end
10
+ describe "#Introducir pregunta" do
11
+ it "Introduccion de pregunta correcto" do
12
+ @multi.preg.should eq("Como me llamo")
13
+ end
14
+ end
15
+ describe "#Introducir numero de respuestas" do
16
+ it "Numero de respuestas correctas" do
17
+ @multi.num.should eq(4)
18
+ end
19
+ end
20
+ describe "#respuesta correcta" do
21
+ it "La respuesta correcta es" do
22
+ @multi.correcta.should eq(3)
23
+ end
24
+ end
25
+ describe "#Introducir resuestas" do
26
+ it"Respuestas correctas" do
27
+ resp = ["Paco", "Pedro", "Carlos", "Adexe"]
28
+ @multi.introducir_resp(resp)
29
+ @multi.resp.should eq(["Paco", "Pedro", "Carlos", "Adexe"])
30
+ end
31
+ end
32
+ describe "#Respuesta correcta? si" do
33
+ it "Respuesta correcta (Programa funciona correctamente)" do
34
+ @multi.correccion(3).should eq(true)
35
+ end
36
+ end
37
+ describe "#Respuesta correcta? no" do
38
+ it "Respuesta incorrecta (Programa funciona correctamente)" do
39
+ @multi.correccion(2).should eq(false)
40
+ end
41
+ end
42
+ describe "#Existen getters?" do
43
+ it "Responde al getter de preg" do
44
+ @multi.respond_to?("preg").should eq(true)
45
+ end
46
+ it "Responde al getter de resp" do
47
+ @multi.respond_to?("resp").should eq(true)
48
+ end
49
+ it "Responde al getter de num" do
50
+ @multi.respond_to?("num").should eq(true)
51
+ end
52
+ it "Responde al getter de correcta" do
53
+ @multi.respond_to?("correcta").should eq(true)
54
+ end
55
+ it "Responde al getter de introducir_resp" do
56
+ @multi.respond_to?("introducir_resp").should eq(true)
57
+ end
58
+ end
59
+ describe "Comparable" do
60
+ it "Mas respuestas" do
61
+ a = @multi > @multi2
62
+ a.should eq(true)
63
+ end
64
+ it "Mas respuestas falso" do
65
+ a = @multi2 > @multi
66
+ a.should eq(false)
67
+ end
68
+ it "Menos respuestas" do
69
+ a = @multi2 < @multi
70
+ a.should eq(true)
71
+ end
72
+ it "Menos respuestas falso" do
73
+ a = @multi < @multi2
74
+ a.should eq(false)
75
+ end
76
+ it "Pregunta igual" do
77
+ multi3 = MultiRespuesta.new("Eres canario",2,1)
78
+ a = multi3 == @multi2
79
+ a.should eq(true)
80
+ end
81
+ end
82
+ end
data/spec/preg2.rb ADDED
@@ -0,0 +1,31 @@
1
+ #Ejercicio 1
2
+ class Xyz
3
+ def pots
4
+ @nice
5
+ end
6
+ end
7
+ xyz = Xyz.new
8
+ p xyz.pots
9
+
10
+ #Ejercicio 2
11
+ hash_raro = {
12
+ [1, 2, 3] => Object.new(),
13
+ Hash.new => :toto
14
+ }
15
+
16
+ #Ejercicio 3
17
+ class Array
18
+ def say_hi
19
+ "HEY!"
20
+ end
21
+ end
22
+ p [1, "bob"].say_hi
23
+
24
+
25
+ #Ejercicio 4
26
+ class Objeto
27
+ end
28
+ puts Objeto.class #Modificación creada para comprobar la clase del objeto...
29
+
30
+ #Ejercicio 5
31
+
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+ require 'preg2'
3
+
4
+ #Prueba ejercicio 1
5
+ #describe Xyz do
6
+ # before :each do
7
+ # @resp = Xyz.new()
8
+ # end
9
+ # describe "Salida apartado 1" do
10
+ # it "Valor de apartado 1 correcto" do
11
+ # @resp.should eq(nil)
12
+ # end
13
+ # end
14
+ #end
15
+ #
16
+ #Prueba ejercicio 2
17
+ #describe "Prueba hash raro" do
18
+ # it "Hash raro es correcto" do
19
+ # hash_raro = {
20
+ # [1, 2, 3] => Object.new(),
21
+ # Hash.new => :toto
22
+ # }
23
+ # hash_raro.should eq("{[1, 2, 3]=>#<Object:0x00000000e96678>, {}=>:toto}")
24
+ # end
25
+ #end
26
+
27
+
28
+ #Prueba ejercicio 3
29
+ describe Array do
30
+ before :each do
31
+ @Array = Array.new()
32
+ end
33
+ describe "Salida apartado 3" do
34
+ it "Valor de apartado 3 correcto" do
35
+ @Array.say_hi.should eq("HEY!")
36
+ end
37
+ end
38
+ end
39
+
40
+ #Prueba ejercicio 4
41
+ describe Objeto do
42
+ before :each do
43
+ @Objeto = Objeto.new()
44
+ end
45
+ describe "Salida apartado 4" do
46
+ it "Valor de apartado 4 correcto" do
47
+ @Objeto.class.should eq(Objeto)
48
+ end
49
+ end
50
+ end
51
+
52
+ #Prueba ejercicio 5
53
+
data/spec/quiz1.rb ADDED
@@ -0,0 +1,114 @@
1
+ #encoding: utf-8
2
+ #require './preg'
3
+ class Answer
4
+ attr_accessor :kind, :order, :answer
5
+ def initialize(order, kind, answer)
6
+ @kind = kind
7
+ @order = order
8
+ @answer = answer
9
+ end
10
+
11
+ def to_s
12
+ "#{@order} - #{answer}"
13
+ end
14
+ def is_right?
15
+ @kind == Quiz::RIGHT
16
+ end
17
+ def <=>(other)
18
+ self.order <=> other.order
19
+ end
20
+ end
21
+
22
+ class Question
23
+ ORDER = 0
24
+ KIND = 1
25
+ attr_accessor :text, :answers
26
+ def initialize(text, answers)
27
+ @text = text
28
+ @answers = answers.map { |k, v| Answer.new(k[ORDER], k[KIND], v) }.sort
29
+ end
30
+
31
+ def to_s
32
+ output = <<"EOQ"
33
+ #{@text}
34
+ #{
35
+ out = ""
36
+ @answers.each do |answer|
37
+ out << " #{answer}\n"
38
+ end
39
+ out
40
+ }
41
+ EOQ
42
+ end
43
+ def ask
44
+ begin
45
+ puts self
46
+ print "Su respuesta: "
47
+ answerno = gets.to_i - 1
48
+ end while (answerno < 0 or answerno >= @answers.length)
49
+ @answers[answerno].is_right?
50
+ end
51
+ end
52
+
53
+ class Quiz
54
+ RIGHT = :right
55
+ WRONG = :wrong
56
+
57
+ attr_accessor :name, :questions
58
+
59
+ def initialize(name = "", &block)
60
+ self.name = name
61
+ self.questions = []
62
+ @counter = 0
63
+ instance_eval &block
64
+ end
65
+
66
+ def question(text, answers)
67
+ q = Question.new(text, answers)
68
+ questions << q
69
+ @counter = 0
70
+ end
71
+
72
+ def to_s
73
+ out = <<"EOQUIZ"
74
+ #{self.name}
75
+ #{self.questions.join("\n")}
76
+ EOQUIZ
77
+ end
78
+
79
+ def wrong
80
+ @counter += 1
81
+ [@counter, WRONG]
82
+ end
83
+
84
+ def right
85
+ @counter+= 1
86
+ [@counter, RIGHT]
87
+ end
88
+
89
+ def title(title)
90
+ @name = title
91
+ end
92
+
93
+ def run
94
+ counter=0
95
+ puts self.name+"\n\n"
96
+ self.questions.each { |q| counter += 1 if q.ask }
97
+ puts "#{counter} respuestas correctas de un total de #{@questions.size}."
98
+ end
99
+ end
100
+
101
+ quiz = Quiz.new("Cuestionario de LPP 10/12/2014") do
102
+ question '¿Cuántos argumentos de tipo bloque puede recibir un método?',
103
+ right =>'Uno',
104
+ wrong =>'Dos',
105
+ wrong =>'Muchos',
106
+ wrong =>'Los que defina el usuario'
107
+ question 'En Ruby los bloque son objetos que continen código',
108
+ wrong =>'Cierto',
109
+ right =>'Falso'
110
+ end
111
+ # puts quiz
112
+ puts "************************"
113
+ quiz.run
114
+
@@ -0,0 +1,18 @@
1
+ #require 'coveralls'
2
+ #Coveralls.wear!
3
+ # This file was generated by the `rspec --init` command. Conventionally, all
4
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
5
+ # Require this file using `require "spec_helper"` to ensure that it is only
6
+ # loaded once.
7
+ #
8
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
9
+ RSpec.configure do |config|
10
+ config.treat_symbols_as_metadata_keys_with_true_values = true
11
+ config.run_all_when_everything_filtered = true
12
+ config.filter_run :focus
13
+ # Run specs in random order to surface order dependencies. If you find an
14
+ # order dependency and want to debug it, you can fix the order by providing
15
+ # the seed, which is printed after each run.
16
+ # --seed 1234
17
+ config.order = 'random'
18
+ end