Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions exercises/practice/allergies/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
@export var score : int
@export var lst: Array: get = _get_lst
@export var score: int
@export var lst: Array:
get = _get_lst

const ALLERGENS = [
"eggs",
Expand All @@ -13,13 +14,11 @@ const ALLERGENS = [
]



func allergic_to(item):
var index = ALLERGENS.find(item)
return bool(1 << index & score)



func _get_lst():
var allergies = []
for item in ALLERGENS:
Expand Down
2 changes: 1 addition & 1 deletion exercises/practice/anagram/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ func find_anagram(word, candidates):
var result = []
var base_list = word.to_lower().split()
base_list.sort()

for obj in candidates:
if word.to_lower() == obj.to_lower():
continue
Expand Down
8 changes: 4 additions & 4 deletions exercises/practice/atbash-cipher/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,24 @@ func to_int(char):

func translate(str):
var result = ""

for char in str.to_lower():
if char.is_valid_int():
result += char
elif char.is_valid_identifier() and not char == "_":
var new_char = String.chr(to_int("z") + to_int("a") - to_int(char))
result += new_char

return result


func encode(plain_text):
var ciphered_text = translate(plain_text)
var chunks = []

for i in range(0, len(ciphered_text), BLOCK_SIZE):
chunks.append(ciphered_text.substr(i, BLOCK_SIZE))

return " ".join(chunks)


Expand Down
15 changes: 10 additions & 5 deletions exercises/practice/camicia/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,13 @@ func values(cards: Array) -> Array[int]:

func value(card: String) -> int:
match card:
"J": return 1
"Q": return 2
"K": return 3
"A": return 4
_: return 0
"J":
return 1
"Q":
return 2
"K":
return 3
"A":
return 4
_:
return 0
6 changes: 5 additions & 1 deletion exercises/practice/food-chain/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,20 @@ var REACTIONS = {
"cow": "I don't know how she swallowed a cow!",
"horse": "She's dead, of course!",
}
var ANIMALS = {1: "fly", 2: "spider", 3: "bird", 4: "cat", 5: "dog", 6: "goat", 7: "cow", 8: "horse"}
var ANIMALS = {
1: "fly", 2: "spider", 3: "bird", 4: "cat", 5: "dog", 6: "goat", 7: "cow", 8: "horse"
}
# Map each animal to it's food/subject, i.e. what it eats.
var SUBJECTS = {}


func _init():
for i in range(7):
SUBJECTS[ANIMALS[i + 2]] = ANIMALS[i + 1]
# Unlike all other animals, the bird does not simply eat a "spider". It is more detailed.
SUBJECTS["bird"] = "spider that wriggled and jiggled and tickled inside her"


func verse(num: int) -> String:
var out = ["I know an old lady who swallowed a %s." % ANIMALS[num]]
if num > 1:
Expand Down
19 changes: 15 additions & 4 deletions exercises/practice/game-of-life/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
func is_alive(matrix, row: int, col: int) -> bool:
return row >= 0 and col >= 0 and row < len(matrix) and col < len(matrix[row]) and matrix[row][col] == 1
return (
row >= 0
and col >= 0
and row < len(matrix)
and col < len(matrix[row])
and matrix[row][col] == 1
)


func tick(matrix):
var offsets = [
[-1, -1], [-1, 0], [-1, 1],
[ 0, -1], [ 0, 1],
[ 1, -1], [ 1, 0], [ 1, 1],
[-1, -1],
[-1, 0],
[-1, 1],
[0, -1],
[0, 1],
[1, -1],
[1, 0],
[1, 1],
]
var out = []
for row_idx in range(len(matrix)):
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/hamming/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,3 @@ func distance(strand1: String, strand2: String) -> int:
if strand1[i] != strand2[i]:
out += 1
return out

4 changes: 2 additions & 2 deletions exercises/practice/isogram/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
func is_isogram(string: String):
string = string.to_lower().replace("-", "").replace(" ", "")
var letters = {}

for c in string:
letters[c] = true

return letters.size() == string.length()
4 changes: 2 additions & 2 deletions exercises/practice/luhn/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
@export var card_num : String
@export var card_num: String


func valid():
var num = card_num.replace(" ", "")
if len(num) <= 1:
return false

var checksum = 0
for index in range(len(num)):
var char = num[len(num) - 1 - index]
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/perfect-numbers/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,3 @@ func classify(number: int):
return "abundant"
else:
return "deficient"

10 changes: 9 additions & 1 deletion exercises/practice/phone-number/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
func clean(number: String):
number = number.replace("(", "").replace(")", "").replace("-", "").replace(".", "").replace(" ", "").replace("+", "")
number = (
number
. replace("(", "")
. replace(")", "")
. replace("-", "")
. replace(".", "")
. replace(" ", "")
. replace("+", "")
)
if len(number) == 11 and number.begins_with("1"):
number = number.substr(1)
if len(number) != 10 or not number.is_valid_int():
Expand Down
2 changes: 1 addition & 1 deletion exercises/practice/prism/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func next_hit(position, angle, prisms):
continue
if hit == null or position.distance_to(prism[1]) < dist:
hit = prism
dist = position.distance_to(prism[1])
dist = position.distance_to(prism[1])
return hit


Expand Down
3 changes: 1 addition & 2 deletions exercises/practice/rational-numbers/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,8 @@ class Rational:

func expreal(base):
# n'th root of x = root(x, n) = power(x, 1/n)
return pow(base**self.numer, 1/float(self.denom))
return pow(base ** self.numer, 1 / float(self.denom))

func reduce():
var div = self.gcd(self.numer, self.denom)
return Rational.new(numer / div, denom / div)

11 changes: 1 addition & 10 deletions exercises/practice/resistor-color-duo/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
const COLORS = [
"black",
"brown",
"red",
"orange",
"yellow",
"green",
"blue",
"violet",
"grey",
"white"
"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"
]


Expand Down
40 changes: 20 additions & 20 deletions exercises/practice/resistor-color-expert/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
func resistor_label(colors):
var size = colors.size()
if size == 1: return "0 ohms"

var colors_code = ["black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"]
var units = {
1e9: "gigaohms",
1e6: "megaohms",
1e3: "kiloohms"
}
if size == 1:
return "0 ohms"

var colors_code = [
"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"
]
var units = {1e9: "gigaohms", 1e6: "megaohms", 1e3: "kiloohms"}
var tolerances = {
"grey" : 0.05,
"violet" : 0.1,
"blue" : 0.25,
"green" : 0.5,
"brown" : 1,
"red" : 2,
"gold" : 5,
"silver" : 10
}
"grey": 0.05,
"violet": 0.1,
"blue": 0.25,
"green": 0.5,
"brown": 1,
"red": 2,
"gold": 5,
"silver": 10
}

var total = 0
var magnitute = pow(10, colors_code.find(colors[-2]))

for i in range(0, size - 2):
var color = colors[i]
total += colors_code.find(color) * pow(10, (size - i - 3))
total += colors_code.find(color) * pow(10, size - i - 3)
total *= magnitute
var tolerance = tolerances[colors[-1]] #work

var tolerance = tolerances[colors[-1]] #work
for key in units.keys():
if total >= key:
return "%s %s ±%s%%" % [format_number(total / key), units[key], tolerance]
return "%s ohms ±%s%%" % [format_number(total), tolerance]


func format_number(n):
return str(int(n)) if n == int(n) else str(n)
11 changes: 5 additions & 6 deletions exercises/practice/resistor-color-trio/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
func label(colors):
var colors_code = ["black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"]
var colors_code = [
"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"
]

var units = {
1e9: "gigaohms",
1e6: "megaohms",
1e3: "kiloohms"
}
var units = {1e9: "gigaohms", 1e6: "megaohms", 1e3: "kiloohms"}

var base_value = colors_code.find(colors[0]) * 10 + colors_code.find(colors[1])
var magnitude = 10 ** colors_code.find(colors[2])
Expand All @@ -17,5 +15,6 @@ func label(colors):

return format_number(total) + " ohms"


func format_number(n):
return str(int(n)) if n == int(n) else str(n)
11 changes: 1 addition & 10 deletions exercises/practice/resistor-color/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
const COLORS = [
"black",
"brown",
"red",
"orange",
"yellow",
"green",
"blue",
"violet",
"grey",
"white"
"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"
]


Expand Down
5 changes: 2 additions & 3 deletions exercises/practice/robot-simulator/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@export var position : Vector2i
@export var direction : Vector2i

@export var position: Vector2i
@export var direction: Vector2i

var allowed_directions = [Vector2i.DOWN, Vector2i.RIGHT, Vector2i.UP, Vector2i.LEFT]

Expand Down
4 changes: 1 addition & 3 deletions exercises/practice/saddle-points/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,4 @@ func saddle_points(matrix):
var val = row[col_idx]
if val == row_max and val == col_minimums[col_idx]:
points.append([row_idx + 1, col_idx + 1])
return points


return points
2 changes: 1 addition & 1 deletion exercises/practice/save-the-cow/.meta/example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class SaveTheCow:
self._word = word
for i in range(len(self._word)):
masked_word += "_"

func guess(letter):
if self.state == "Win":
self.error = "cannot guess after the game is won"
Expand Down
18 changes: 9 additions & 9 deletions exercises/practice/scale-generator/.meta/example.gd
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const ASCENDING_INTERVALS = ['m', 'M', 'A']
const CHROMATIC_SCALE = ['A', 'A#', 'B', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#']
const FLAT_CHROMATIC_SCALE = ['A', 'Bb', 'B', 'C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab']
const FLAT_KEYS = ['F', 'Bb', 'Eb', 'Ab', 'Db', 'Gb', 'd', 'g', 'c', 'f', 'bb', 'eb']
const ASCENDING_INTERVALS = ["m", "M", "A"]
const CHROMATIC_SCALE = ["A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"]
const FLAT_CHROMATIC_SCALE = ["A", "Bb", "B", "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab"]
const FLAT_KEYS = ["F", "Bb", "Eb", "Ab", "Db", "Gb", "d", "g", "c", "f", "bb", "eb"]

@export var tonic : String
@export var tonic: String


func chromatic():
Expand All @@ -14,17 +14,17 @@ func interval(intervals):
var last_index = 0
var pitches = []
var scale = _reorder_chromatic_scale()

for interval in intervals:
pitches.append(scale[last_index])
last_index += ASCENDING_INTERVALS.find(interval) + 1

pitches.append(tonic.capitalize())

return pitches


func _reorder_chromatic_scale():
var chromatic_scale = (FLAT_CHROMATIC_SCALE if tonic in FLAT_KEYS else CHROMATIC_SCALE)
var chromatic_scale = FLAT_CHROMATIC_SCALE if tonic in FLAT_KEYS else CHROMATIC_SCALE
var index = chromatic_scale.find(tonic.capitalize())
return chromatic_scale.slice(index) + chromatic_scale.slice(0, index)
Loading
Loading