Grazie a voi abbiamo trovato il promo bug dalla demo! Ecco lo stacktrace per i curiosi:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/server.py", line 71, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/server.py", line 88, in wsgi_app
return self.handlers[controller].handle(action, args, request)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/handlers/base_handler.py", line 57, in handle
data = BaseHandler._call(self.__getattribute__(endpoint), route_args, request)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/handlers/base_handler.py", line 181, in _call
return method(**kwargs)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/validators.py", line 30, in handle
return handler(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/validators.py", line 76, in handle
return handler(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/validators.py", line 98, in handle
return handler(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/validators.py", line 98, in handle
return handler(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/handlers/contest_handler.py", line 84, in submit
score, autocommit=False):
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/database.py", line 352, in add_submission
"input": input, "source": source
File "/usr/local/lib/python3.5/dist-packages/territoriali_backend-0.0.1-py3.5.egg/src/database.py", line 245, in do_write
Database.c.execute(query, params)
sqlite3.IntegrityError: UNIQUE constraint failed: submissions.input
Se vengono fatte più submission relative allo stesso input in teoria. Domani indago più nel dettaglio, ma leggendo il codice dovrebbe essere proprio quello.
Dal prossimo anno (aprile 2018) verrà usato un nuovo sistema per la gestione della fase territoriale delle Olimpiadi di Informatica. Un gruppo di tutor ha lavorato al progetto (backend & frontend) e vi stiamo usando come cavie e betatester.
Chiaramente vogliamo che per aprile sia tutto funzionante e il sistema sia il più possibile stabile. Per questo vi chiediamo di provare ad usarlo e a “spaccarlo”, se ci riuscite almeno abbiamo il tempo di fixare Se non avete tempo/voglia di provare a romperlo usarlo semplicemente è più che sufficiente per darci una grossa mano; come hai visto ci siamo accorti di un bug nuovo!
In più darvi un’anticipazione vi consente di proporre dei suggerimenti per cose che non vi piacciono o che vi piacerebbe venissero aggiunte.
Parecchie in realtà in alcuni hanno anche fatto punteggio pieno!
Allego una soluzione Python3 scritta al volo per il task lwf, in caso qualcuno volesse fare dei test ma non conoscesse (e non avesse voglia di leggere) i task:
T = int(input())
f = [1, 1]
while f[-1] < 1000000:
f.append(f[-1] + f[-2])
for t in range(T):
N = int(input())
s = ""
for i in reversed(range(len(f))):
if f[i] <= N:
s = "1" + s
N -= f[i]
else:
if "1" in s:
s = "0" + s
print("Case #%d: %s" % (t + 1, s))
Da notare quanto è figo che da quest’anno le territoriali si possono fare anche in Python!
Nota: dalla regia mi dicono che forse non sarà permesso quest’anno, ma solo a partire dall’anno prossimo
Per chi farà la territoriale questo aprile: mi raccomando leggete bene il regolamento per sapere cosa è vietato, cosa è permesso, e cosa non è vietato ¯\_(ツ)_/¯
Big love for python, peccato io sia del 99 e ormai ho finito. Posso chiedere che librerie (oltre quelle standard) saranno supportate? Ad esempio numpy potrebbe essere utile ad assottigliare il gap di performance tra C è python; credo quindi possa essere utile
Seleziona un problema. Richiedi l’input, in locale lo esegui , clicca su carica soluzione e carichi il tuo file cpp come file sorgente e il tuo file txt dove hai l’output.
Piccola curiosità ma il codice che viene sottoposto viene anche eseguito? e se si allora perché si carica il file?
Nope. È questo il bello, non eseguiamo codice untrusted quindi non serve una sandbox e non serve stare attenti ai limiti di tempo (se uno manda un while true?).
A voler eseguire il sorgente ci bastava usare CMS… Solo che non vogliamo dare time limit stretti (vedi i 5 minuti da regolamento attuali) e non vogliamo che le sedi territoriali abbiano a che fare con CMS