Skip to content

Commit 5d33dfb

Browse files
authored
Merge pull request #50 from biancaguzenski/palindromo
Palindromo
2 parents cc07c29 + f261b45 commit 5d33dfb

File tree

3 files changed

+106
-2
lines changed

3 files changed

+106
-2
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Com o objetivo de alcançar uma abrangência maior e encorajar novas pessoas a c
3939
| [Fila Encadeada Dinâmica][19] | [C/C++](/src/c/FilaEncadeadaDinamica.c) | Java | Python | Go | Ruby | Javascript | Pascal |
4040
| [Grafo][20] | [C/C++](/src/c/Grafos.c) | Java | Python | Go | Ruby | Javascript | Pascal |
4141
| [Lista Circular Ligada][52] | [C/C++](/src/c/ListaCircularLigada.c) | Java | [Python](/src/python/lista_encadeada_circular.py) | Go | Ruby | Javascript | Pascal |
42-
| [Lista Encadeada][22] | C/C++ | Java | [Python](/src/python/lista_encadeada.py) | Go | Ruby | [Javascript](/src/javascript/ListaSimplesmenteEncadeada.js) | Pascal |
42+
| [Lista Encadeada][22] | C/C++ | Java | [Python](/src/python/lista_encadeada.py) | Go | [Ruby](/src/ruby/Lista_encadeada.rb) | [Javascript](/src/javascript/ListaSimplesmenteEncadeada.js) | Pascal |
4343
| [Lista Duplamente Encadeada][23] | [C/C++](/src/c/ListaDuplamenteEncadeada.c) | [Java](/src/java/ListaDuplamenteEncadeada.java) | [Python](/src/python/lista_duplamente_encadeada.py) | Go | Ruby | [Javascript](/src/javascript/ListaDumplamenteEncadeada.js) | Pascal |
4444
| [Lista Ligada Não Ordenada][24] | [C/C++](/src/c/ListaLigadaNaoOrdenada.c) | Java | Python | Go | Ruby | Javascript | Pascal |
4545
| Lista Sequencial Ordenada | [C/C++](/src/c/ListaSequencialOrdenada.c) | Java | [Python](/src/python/lista_sequencial_ordenada.py) | Go | Ruby | Javascript | Pascal |
@@ -69,7 +69,7 @@ Com o objetivo de alcançar uma abrangência maior e encorajar novas pessoas a c
6969
|-------------------------------------|-------|------|--------|----|------|------------|--------|
7070
| Lista com 2 Pilhas | C/C++ | Java | [Python](/src/python/lista_com_pilhas.py) | Go | Ruby | Javascript | Pascal |
7171
| Problema da Soma de 2 Números | C/C++ | Java | [Python](/src/python/soma_dois_numeros.py) | Go | Ruby | Javascript | Pascal |
72-
| [Palíndromo][49] | [C/C++](/src/c/Palindromo.c) | Java | Python | Go | Ruby | Javascript | Pascal |
72+
| [Palíndromo][49] | [C/C++](/src/c/Palindromo.c) | Java | Python | Go | [Ruby](/src/ruby/Palindromo.rb) | Javascript | Pascal |
7373
| Lista Encadeada Desordenada | C/C++ | Java | [Python](/src/python/lista_encadeada_desordenada.py) | Go | Ruby | Javascript | Pascal |
7474
| [Calcula o PI (Fórmula de Leibniz)][50] | C/C++ | Java | [Python](/src/python/calculate_pi.py) | Go | Ruby | Javascript | Pascal |
7575
| Busca em Labirinto | C/C++ | Java | [Python](/src/python/busca_em_labirinto.py) | Go | Ruby | Javascript | Pascal |

src/ruby/Lista_encadeada.rb

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
class Node
2+
attr_accessor :data, :next
3+
def initialize(data)
4+
@data = data
5+
@next = nil
6+
end
7+
end
8+
9+
class LinkedList
10+
def initialize
11+
@head = nil
12+
end
13+
14+
def append(data)
15+
if @head.nil?
16+
@head = Node.new(data)
17+
else
18+
find_tail.next = Node.new(data)
19+
end
20+
end
21+
22+
def find_tail
23+
current_tail = @head
24+
until current_tail.next.nil?
25+
current_tail = current_tail.next
26+
end
27+
return current_tail
28+
end
29+
30+
def find_before_node(value)
31+
current = @head
32+
until current.next.data == value
33+
current = current.next
34+
end
35+
return current
36+
end
37+
38+
def delete(value)
39+
if @head.data == value
40+
@head = @head.next
41+
else
42+
target = find(value)
43+
before = find_before_node(value)
44+
before.next = target.next
45+
end
46+
end
47+
48+
def find(value)
49+
current = @head
50+
until current.data == value
51+
current = current.next
52+
end
53+
current
54+
end
55+
56+
def insert_after(target, value)
57+
current = find(target)
58+
temp = current.next
59+
current.next = Node.new(value)
60+
current.next.next = temp
61+
end
62+
63+
def print_list
64+
current = @head
65+
puts "List: "
66+
until current.nil?
67+
print "#{current.data} "
68+
current = current.next
69+
end
70+
end
71+
end
72+
73+
list = LinkedList.new
74+
list.append(10)
75+
list.append(20)
76+
list.append(30)
77+
list.insert_after(20, 22)
78+
list.print_list
79+
list.delete(30)
80+
list.print_list

src/ruby/Palindromo.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
require "test/unit/assertions"
2+
include Test::Unit::Assertions
3+
4+
#the easiest implementation would be using .reverse method
5+
6+
7+
def is_palindrome(string)
8+
9+
return true if string.size == 1 || string.size == 0
10+
11+
reversed = ""
12+
string = string.gsub(" ", "").downcase
13+
string.chars.reverse_each do |c|
14+
reversed << c
15+
end
16+
17+
reversed == string ? true : false
18+
end
19+
20+
assert_equal is_palindrome("abba"), true
21+
assert_equal is_palindrome("abbas"), false
22+
assert_equal is_palindrome("tattarrattat"), true
23+
assert_equal is_palindrome("Was it a palindrome?"), false
24+
assert_equal is_palindrome("No lemon, no melon"), true

0 commit comments

Comments
 (0)