Kazalo vsebine

Brskanje po kategorijah

Brskanje po avtorjih

AL

Alessia Longo

AH

Al Hoge

BJ

Bernard Jerman

Bojan Čontala

CF

Carsten Frederiksen

CS

Carsten Stjernfelt

DC

Daniel Colmenares

DF

Dino Florjančič

EB

Emanuele Burgognoni

EK

Eva Kalšek

FB

Franck Beranger

GR

Gabriele Ribichini

GC

Glacier Chen

GS

Grant Maloy Smith

HB

Helmut Behmüller

IB

Iza Burnik

JO

Jaka Ogorevc

JR

Jake Rosenthal

JS

Jernej Sirk

JM

John Miller

KM

Karla Yera Morales

KD

Kayla Day

KS

Konrad Schweiger

LW

Leslie Wang

LS

Loïc Siret

LJ

Luka Jerman

MB

Marco Behmer

MR

Marco Ribichini

ML

Matic Lebar

MS

Matjaž Strniša

ME

Matthew Engquist

ME

Michael Elmerick

NP

Nicolas Phan

OM

Owen Maginity

PF

Patrick Fu

PR

Primož Rome

RM

Rok Mesar

RS

Rupert Schwarz

SA

Samuele Ardizio

SK

Simon Kodrič

SG

Søren Linnet Gjelstrup

TH

Thorsten Hartleb

TV

Tirin Varghese

UK

Urban Kuhar

VP

Valentino Pagliara

VS

Vid Selič

WK

Will Kooiker

Dewesoft izziv 🚀

PR

Primož Rome

August 1, 2023

The astronaut

Opis izziva

Kot znanstvenik znane vesoljske agencije si zadolžen za razvoj novega načina prenašanja informaciji po vesolju. Algoritem, ki ga boš razvil mora najprej zakodirati niz byte-ov, ki se bodo poslali na oddaljeno vesoljsko postajo. Med prenosom se bo zaradi kozmičnih žarkov po vseh pričakovanjih nekaj bitov v sporočilu pokvarilo, tako da mora kodirani niz vsebovati mehanizme redundance, da bo lahko na vesoljski postaji sestrski algoritem takšen niz pravilno odkodiral. Kodiranje mora tako delovati robustno, učinkovito ter z mero redundance.

Zahteve

  • Izdelaj dva programa, enega za kodiranje niza in drugega, ki bo kodiran niz pretvoril v prvotno obliko.

  • Program za kodiranje mora pretvoriti kakršenkoli niz byte-ov v kodiran niz byte-ov.

  • Kodiran niz mora biti najmanjši, kot je lahko. Prav tako mora biti redundančno sestavljen.

  • Program za dekodiranje naj bo zmožen sprejeti kodiran niz. Kodiran niz je lahko “pokvarjen” (naključni biti so lahko negirani).

  • Algoritem naj poskusi popraviti in dekodirati prejeti kodiran niz.

  • Oba programa naj svoji rešitvi izpišeta na standarden izhod.

  • Algoritem naj deluje hitro, za omogočanje čim hitrejše komunikacije.

Evalvacijski kriterij

  • Dolžina kodiranega niza → Manjše je boljše.

  • Redundanca sporočila → Več odpravljenih napak med prenosom je boljše.

  • Hitrost kodiranja in dekodiranja → Hitrejše je boljše.

Dodeljevanje točk

  • Da se podani rešitvi štejejo točke, mora ta najprej pravilno prestati sprejemne teste. To so preprosti primeri kodiranja in dekodiranja, ki ne testirajo redundance.

  • Celotna ocena je sestavljena iz seštevkov ocen hitrosti, redundance, ter učinkovitosti. Posamezna ocena lahko prinese največ 1 točko, največja celotna ocena znaša 3 točke.

  • Vse posamezne ocene se normirajo glede na najboljšo doseženo oceno vseh oddanih rešitev.

Oddaja

  • Svoje rešitve oddaj v poljubnem programskem jeziku.

  • Uporaba knjižnic je omejena zgolj na standardne, ki so nameščene skupaj s poljubnim programskim jezikom.

  • Poleg oddanih rešitev dodaj tudi kratko razlago, kako delujeta kodiranje in dekodiranje. Označi tudi kateri program je namenjen za kodiranje in kateri za dekodiranje ter kako se ju zažene.

Opis vhoda v program za kodiranje

  • N: celo število 1 - 10^6

  • Niz N-tih byte-ov

Opis vhoda v program za dekodiranje

  • N: celo število

  • Niz N-tih byte-ov

Primer poteka izvajanja

$ python3 ./encode < original_data.txt > encoded_data.txt

$ ./corrupt < encoded_data.txt > encoded_corrupted_data.txt

$ python3 ./decode < encoded_corrupted_data.txt > decoded_data.txt

 Primer vhoda in izhoda pri izvajanju

original_data.txt: “5\n abcde”

encoded_data.txt: “xyzw”

encoded_corrupted_data.txt: “4\n x1zw”

decoded_data.txt: “abcde”

Opomba

Svojo rešitev pošlji na email naslov: careers@dewesoft.com

Kakšna nagrada te čaka? Potovanje na Mars? Priložnost dela v Dewesoftu? Vrhunski Dewesoft merch? 

Vse izveš, ko prejmemo tvojo končno rešitev! May the force be with you! 👽👩‍🚀🚀🪐