Knooppunt systeem
Als onderdeel van een studie-opdracht (Design Academy) ben ik bezig de zogenaamde ‘knooppuntenroute’, een systeem dat vooral gebruikt wordt voor wandelaars in Nederland om een route te beschrijven, van een cijfersysteem naar een lettersysteem om te zetten. Een lettersysteem dat dusdanig functioneert dat de letters achtereenvolgend een woord vormen. Een woord is immers makkelijker te onthouden dan een ogenschijnlijke onsamenhangende reeks cijfers. Voor als dit te snel ging, ik zal het stapsgewijs uitleggen:
(Het is mogelijk door de toelichting te scrollen, de vraag begint vanaf de 3e afbeelding)
Het huidige systeem werkt als volgt.
Gewijzigd op 22/10/2012 17:40:08 door Alexander Scherpenisse
Ga niet uit van de knooppunten, maar van de routes die ze verbinden. Elk knooppunt heeft namelijk maar één, twee, drie of vier buren; het aantal geldige combinaties is daarom beperkt en makkelijk vast te leggen in een database (of een database-achtige tabel).
Zou je twee kritieke gegevens voor een routeplanner toevoegen, namelijk afstand én reistijd, dan gelden die ook alleen voor een route tussen twee knooppunten, nooit voor een knooppunt.
Met andere woorden: bouw het model op basis van de verbindingslijn tussen x en y, niet de afzonderlijke punten x en y.
Gewijzigd op 22/10/2012 19:32:44 door Alexander Scherpenisse
Je gaat nu te veel uit van knooppunten, om precies te zijn twee: bok en neder. Daardoor reizen gebruikers via bok-k-i-g-neder of omgekeerd neder-g-i-k-bok.
Maar wat nu als een gebruiker naar i of g wil? Dan krijg je de vergelijkbare oplossingen bok-k-i en bok-k-i-g of omgekeerd neder-g-i en neder-g. En dán is de oplossing ineens minder houdbaar, omdat er nog maar één letter verschil in zit. Grote kans dat een reiziger onderweg een letter mist, in de verkeerde volgorde plaatst of erbij verzint omdat hij andere routes heeft bekeken.
Gewijzigd op 22/10/2012 20:14:35 door Alexander Scherpenisse
Dát is je uitdaging als ontwerper!
Hoe je hier van A naar B komt via een mooi woord, is een symptoom, maar je moet niet aan symptoombestrijding doen. Veel interessanter en belangrijker is of je ontwerpoplossing ook toepasbaar en bruikbaar is bij andere situaties.
Misschien dat we elkaar niet begrijpen, maar het technisch hulpmiddel waar we het over hebben moet het mogelijk maken om handmatig íedere kaart werkend te krijgen. De begin- en eindpunten die in dit voorbeeld aangeduid zijn (bok, neder, neun), zijn de *officiële* start en eindpunten (bepaald door de VVV en het locale SRE). Dat is waarom dit systeem zich daarop focust, zonder dat het daarmee onbruikbaar wordt voor eventuele tussenliggende locaties.
Een "hard coded" oplossing schrijven voor drie vaste punten op een kaart is bijna kinderspel: gewoon letterlijk en figuurlijk uitschrijven. Je uitdaging is het schrijven van een algoritme dat vergelijkbare problemen kan oplossen als er meer en andere "map points" worden toegevoegd.
De betreffende kaart is ook een (bestaande) uitsnede, en, ja, het moet ook doorgevoerd worden tot een grotere schaal. Vandaar het plusknopje links op de laatste regel, zodat er een oneindig aantal regels toegevoegd kunnen.
Frank
Ah leuk is dat :(
<input type="text" name="rij_kolom" />
dus rij 3, 4de vakje:
<input type="text" id="3_4" />
ben zelf niet zo'n held in javascript
maar met jQuery dan zou je gewoon zoiets kunnen doen:
$("#3_4").val($("#1_2").val());
zou je 3_4 vakje moeten updaten met de waarde van je 1_2 vakje
nouja mn js/jQuery kennis is echt maar heel beperkt dus zal wel het een en ander niet werken.
Maar waarom gelijk een groot probleem posten als je alleen hulp vraagt over het javascript gedeelte ? o_O
Maar om je even op weg te helpen:
Die vakjes kan je wel met php genereren.
Dan is het alleen nog aan javascript om de volgorde van a,b,c of c,b,a of wat dan ook te "mappen" naar het juiste vakje. Die volgorde kan je door php in een javascript variabele laten schrijven.
En dan moet je een functie maken die:
1. eerste alle mogelijke letters ophaald: dus a t'm .. (ik bedoel hiet niet bok, neder)
2. per letter bekijkt welke vakjes (input velden dus) in welke rijen hieraan gekoppeld moet worden
3. koppelen van alle vakjes aan elkaar.
@Flip: Bedankt voor de aanzet. Tegen alle verwachting heeft iemand op HTML-site in een vlaag van enthousiasme het hele script geschreven. Desalniettemin, bedankt voor je hulpvaardigheid!
$('.'+cn).val($(this).val()); <-- the magic