[GPC opgave 2] Oplossingen

Pagina: 1
Acties:

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
In het kader van beter laat dan nooit (sorry druk druk druk)

De jury testset
code:
1
2
3
4
5
6
7
8
9
10
5
hell 5
hello 4
idea 8
next 8
super 3
3
324450
32210
380

en de uitvoer
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
h
he
hel
hell
hello

h
he
ide
idea

h
onmogelijk

Hier gingen er aardig wat de mist op in :)

Doet iets met Cloud (MS/IBM)


Verwijderd

misschien handig als je er even een link naar de vraag bij zet? :)

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Geintje zeker....
Was DIT de testset, heb ik daarvoor een boom datastructuur gemaakt waarmee ik in O(n) een codewoord kon opzoeken???

DAMN!

He who knows only his own side of the case knows little of that.


  • Orphix
  • Registratie: Februari 2000
  • Niet online
dus als het voorbeeld het deed, dan was het goed??
hmm maar goed dat ik niet al te intensief heb getest ;)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op maandag 17 december 2001 13:47 schreef hezik het volgende:
misschien handig als je er even een link naar de vraag bij zet? :)
jij doet niet mee zeker??
[topic=340659/1/25]

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op maandag 17 december 2001 13:48 schreef RickN het volgende:
Geintje zeker....
Was DIT de testset, heb ik daarvoor een boom datastructuur gemaakt waarmee ik in O(n) een codewoord kon opzoeken???

DAMN!
:)
het ging om de truc

Doet iets met Cloud (MS/IBM)


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op maandag 17 december 2001 13:48 schreef Orphix het volgende:
dus als het voorbeeld het deed, dan was het goed??
hmm maar goed dat ik niet al te intensief heb getest ;)
Dit is net iets anders als de voorbeeld testset

  • Orphix
  • Registratie: Februari 2000
  • Niet online
ik vond het al zo raar dat die goed was met dit progje
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main(int argc, char* argv[])
{
cout << "h
he
hel
hell
hello
h
he
ide
idea

h
onmogelijk" << endl;
return 0;
}

>:)
(pff ja niet gaan zeuren over de newlines he)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op maandag 17 december 2001 13:52 schreef wasigh het volgende:

[..]

Dit is net iets anders als de voorbeeld testset
code:
1
2
3
4
5
6
7
8
9
10
5
hell 3
hello 4
idea 8
next 8
super 3
3
324450
32210
380

zoek de verschillen :)
code:
1
2
3
4
5
6
7
8
9
10
11
i
id
hel
hell
hello
i
id
ide
idea
i
onmogelijk

Doet iets met Cloud (MS/IBM)


  • Orphix
  • Registratie: Februari 2000
  • Niet online
ooooh :)

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 08-09 11:49
En wij moesten dat programma bouwen voor 1000 woorden van 50 tekens....

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op maandag 17 december 2001 14:16 schreef Twilight Burn het volgende:
En wij moesten dat programma bouwen voor 1000 woorden van 50 tekens....
that's life :)

(waar moeten in een halve dag zo'n testset vandaan halen met goede uitkomst?)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19
Op maandag 17 december 2001 14:16 schreef Twilight Burn het volgende:
En wij moesten dat programma bouwen voor 1000 woorden van 50 tekens....
ja
daar moeten de mods uit de opgave natuurlijk wel mee kunnen werken >:)

<edit>
damn wasigh
das ook voor het eerst dat je sneller bent >:)

Doet iets met Cloud (MS/IBM)


  • Wokker
  • Registratie: September 2001
  • Laatst online: 06:17

Wokker

De avond wokkel

Kan niemand hier een werkende versie plus source code kunnen posten ??
Kan ik er mischien nog wat van leren :)
Alvast bedankt !!

Het oneindige X 0


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik vraag me af hoeveel mensen hier hun opdrachten goed met commentaar voorzien ;)
Ik denk dat je aan mijn code weinig zult hebben iig (C++), ik zit on-the-fly wat te programmeren bij dit soort dingen eigenlijk :)

  • Wokker
  • Registratie: September 2001
  • Laatst online: 06:17

Wokker

De avond wokkel

Op maandag 17 december 2001 16:10 schreef Orphix het volgende:
Ik vraag me af hoeveel mensen hier hun opdrachten goed met commentaar voorzien ;)
Ik denk dat je aan mijn code weinig zult hebben iig (C++), ik zit on-the-fly wat te programmeren bij dit soort dingen eigenlijk :)
oHh maakt niet zo uit
ik wil gewoon ff kijken :)
of mag dat niet ?? :P

Het oneindige X 0


  • Munters
  • Registratie: September 2000
  • Laatst online: 17-08 13:56
Op maandag 17 december 2001 16:17 schreef Wokker het volgende:

[..]

oHh maakt niet zo uit
ik wil gewoon ff kijken :)
of mag dat niet ?? :P
Je mag mijn oplossing best hebben / inzien hoor.
Maar het bestaat uit 161 regels, dus minder geschikt om hier neer te zetten denk ik.

Hier volgt alvast een voorproefje, de main routine: 8-)
int main(int argc, char *argv[])
{
Init();
DictRead();
HandleInput();
}
Kan niet fout zijn toch? Als je de rest ook wilt, geef maar je mailadres. (Ik geef er overigens geen uitleg bij).

Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op maandag 17 december 2001 16:32 schreef Munters het volgende:

[..]

Hier volgt alvast een voorproefje, de main routine: 8-)
code:
1
2
3
4
5
6
int main(int argc, char *argv[])
{
  Init();
  DictRead();
  HandleInput();
}
Mooie "seperation of concerns" :9

He who knows only his own side of the case knows little of that.


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Ik heb het even online gezet. hier kan je het vinden. Als je weet hoe iets beter moet, zeg het me dan! :)

Verwijderd

Lol, leuke testset.
Het verbaast me dat er hier veel de mist in gingen.
Ik denk dat met deze set er nog veel meer de mist in zouden gaan :
code:
1
2
3
4
5
6
7
4
got 10
hebben 20
houden 2
geheel 2
1
3570

Waar zit de moeilijkheid ? Wel, in het feit dat iedereen vertrekt met een h (20+2 > 10+2), en daarna in die richting verder gaat. En dus met 'ho' voor de dag komt na de 5, om dus te eindigen met 'hou'. Helaas, want 'go' heeft hogere prioriteit dan 'ho'...en dus met het 'go' en dan 'got' zijn. Als de jury ff wil hertesten met deze >:) :P

  • Orphix
  • Registratie: Februari 2000
  • Niet online
code:
1
2
3
h
go
got

die van mij struikelt er niet over *D

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
mijne ook niet hoor...

He who knows only his own side of the case knows little of that.


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
mijne ook niet ..

Verwijderd

Hmm, ik zei ook niet dat iedereen z'n prog er over zou vallen... :P De betere doen 't toch wel hoor, daar twijfel ik niet aan...

Maar ik kan me inbeelden dat als je de 'jury-val' niet overleefd, dat je die van mij ook niet overleefd. En dat er dan nog zijn die die van de jury overleven, maar de mijne niet. Snappie ? :) Ik wou ff de behoorlijke oplossingen van de uitstekende scheiden zie je >:)

Verwijderd

Mijn oplossing Web-pagina en javascript console-app.

Algoritme:
Laad de library per woord. Ik houd per (deel)woord een lijst bij wat de prioriteit is :
woord-lengte:[deel-woord:prio,...]
1:[h:7,i:8,n:8,s:3]
2:[he:7,id:8,ne:8,su:3]
3:[hel:7,ide:8,nex:8,sup:3]
4:[hell:7,idea:8,next:8,supe:3]
5:[hello:4,super:3]
en per positie houd ik bij welke letters mogelijk zijn:
string-positie:[lijst-mogelijke-letters]
0:[h,i,n,s]
1:[e,d,u]
2:[l,e,x,p]
3:[l,a,t,e]
4:[o,r]
Dit alles per relatief snelle objecten (associatieve array) in een array.

Daarna ga ik recursief de woorden proberen. Onmogelijke letters probeer ik niet (op positie 1 het cijfer 1 kan bijv. niet). Structuur:
<invoer:=mogelijke-letters,...>
<324450:=hi,de,l,l,o>
<32210:=hi,de,e,a>
<380:=hi,>
<8173330:=,,,,,>
Het enige jammerre is: ik stop de te proberen string steeds weer op de stack, omdat je in javascript niet het laatste teken van de string af kunt kappen. Dingen als str.length-- werkt niet :( :(
Heeft iemand nog een idee om dat recursieve gedoe wat efficienter te doen?

Btw: dit is m'n eerste zelfbedachte recursie-algoritme *D (op school heb ik natuurlijk fibonacci, faculteit, doolhofoplossen gemaakt, maar dit is toch anders). Maare, het wordt niet m'n hobby.

edit:
Zo'n lang verhaal schrijf je nooit in 1 keer goed

  • Munters
  • Registratie: September 2000
  • Laatst online: 17-08 13:56
Op maandag 17 december 2001 16:36 schreef RickN het volgende:

[..]

Mooie "seperation of concerns" :9
Ja, voor de rest is het een takkenzooi.
(Een weight-balanced 26-voudige boomstructuur dus).

Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.


Verwijderd

Op maandag 17 december 2001 16:32 schreef Munters het volgende:
Kan niet fout zijn toch? Als je de rest ook wilt, geef maar je mailadres. (Ik geef er overigens geen uitleg bij).
Ik zou wel eens willen zien wat er in je Init() staat ;): zanstra@hotmail.com

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Toch leuk om andere oplossingen te lezen, zoals Doekman. Niet elke keer zoeken, maar gewoon een data-structuur ontwerpen voor elke mogelijke zoek-actie :)

(gelukkig voor jou dat de test set niet zo groot was ;))

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op maandag 17 december 2001 23:45 schreef Munters het volgende:

[..]

Ja, voor de rest is het een takkenzooi.
(Een weight-balanced 26-voudige boomstructuur dus).
Ik heb ook een boomstructuur. De mijne is tienvoudig en elk pad geeft de codering van een woord uit de library aan. Deel paden bevatten dus de codering deelwoorden. Een (deel)pad bevat alleen het (deel)woord met de hoogste prioriteit. Een (deel)woord dat dus nooit opgevraagd kan worden (omdat het een te lage prioriteit heeft) wordt dus uiteindelijk niet in mijn boom opgeslagen. Het opzoeken van een code woord bestaat nu nog uit het het volgen van het bijbehorende pad door de boom (dat dus helemaal bepaald wordt door de cijferreeks van het gecodeerde woord) en onderweg alle (deel)woorden die je tegenkomt af te drukken. Da's mooi O(n) dus, met voor n de lengte van het codewoord. Sneller opzoeken kan niet :) .

He who knows only his own side of the case knows little of that.


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

nice :)
Pagina: 1