
La sfida consiste in una traccia a tema natalizio (solitamente gli elfi aiutanti di babbo natale che combinano casini) che si divide in due parti il completamento di ciascuna parte vi dara una stella. Otterrete cosi in totale 50 stelle.
Le sfide sono pesantemente basate sulla manipolazione delle stringhe di testo. Quindi preparatevi a fare string parsing di continuo.
La difficolta principale che potreste trovare? La traccia è in inglese e può risultare lunga e difficile da decifrare. Ovviamente la sfida diventa sempre più difficile ogni giorno che passa. Io personalmente non sono riuscito ad andare oltre la 6° giornata. Ma questo sono io.
SPOILERS
La prima traccia è uscita e sono riuscito a completarla. Io sono autodidatta e l’unico modo di programmare che conosco è il gdscript di Godot Engine.
Tempo Impiegato : Circa 1h10m
Linguaggio : GdScript
Day 1
Dati base:
3 4
4 3
2 5
1 3
3 9
3 3
La prima parte della traccia chiedeva, date le due liste (sinistra e destra) altro non sono che due liste di luoghi distanti tra di loro. Bisogna organizzarsi in modo da capire quale è la distanza totale tra questi numeri, Bisogna quindi prendere i numeri più piccoli da entrambe le liste , due alla volta e poi sottrarli tra di loro. 1-3 =-2 , prendiamo il numero assoluto quindi senza il segno. 2-3=-1 e cosi via … totale distanza sarà data da 2 + 1 + 0 + 1 + 2 + 5 = 11
La seconda traccia invece chiede, di prendere ciascun numero della prima lista e trovare quante volte è presente nell’altra lista. Poi si prende il numero stesso e si moltiplica per il numero di occorrenze.
Il 3 ad esempio è presente 3 volte nella lista a destra. 3*3 =9 , il 4 è presente solo 1 volta , quindi 4*1=4 …insomma bisogna fare la somma.
Questo è stato il mio approccio:
extends Node2D
var list1 = []
var list2 = []
var list1_1 = []
var list2_1 = []
var rawData
var rawData2 = []
var distance = 0
var similarities = 0
func _ready():
# Loading Data
rawData = Glo.loadData()
# Splitting Data in for line
rawData = rawData.split("\n")
# Removing "\r" from some data and creating a new array
for i in rawData:
rawData2.append(i.rstrip("\r"))
# Removing spaces " " from each array and converting to numbers (int)
# Creating a new array
rawData = []
for n in rawData2:
var finalForm = n.split(",", false)
rawData.append([int(finalForm[0]), int(finalForm[1])])
# Create list 1 and list 2
for item in rawData:
list1.append(item[0])
list2.append(item[1])
# Duplicating array for later
list1_1 = list1.duplicate()
list2_1 = list2.duplicate()
# Calculate Distance
for size in list1.size():
var a = list1.pop_at(list1.find(list1.min()))
var b = list2.pop_at(list2.find(list2.min()))
var d = abs(a-b)
distance += d
# Check similarities
for i in list1_1:
var sim = list2_1.count(i)
var simTot = i * sim
similarities += simTot
print("Distance: ", distance)
print("Similarities: ", similarities)
#-In un singleton chiamato Glo
extends Node
var dataPath = "res://Day 1 data.txt"
# Load data func in singleton
func loadData():
var data = FileAccess.get_file_as_string(dataPath)
return data

Commenti
Posta un commento