Sei un imprenditore delle ferrovie negli Stati Uniti del XIX secolo quando i treni diventano popolari perché sono il mezzo più efficiente per trasportare grandi volumi di materiali via terra. C'è un bisogno nazionale di binari ferroviari dalla costa orientale attraverso alcune terre recentemente colonizzate a ovest.
Per soddisfare questa esigenza, il governo degli Stati Uniti imporrà un'imposta per sovvenzionare le ferrovie. Hanno promesso di pagare soldi alla compagnia ferroviaria per ogni miglio di binario tracciato. Poiché la posa dei binari nelle regioni collinari e montane è più costosa rispetto alla posa dei binari in pianura, essi adeguano di conseguenza l'importo che danno. Cioè, il governo pagherà
- $ 5.000 per miglio di binario posato in terra piatta
- $ 12.500 per miglio di binario posato in terra collinare
- $ 20.000 per miglio di binario posato in montagna.
Naturalmente, questo piano non riflette accuratamente quanto effettivamente costa tracciare le tracce.
Hai assunto alcuni cartografi per disegnare mappe in rilievo delle regioni in cui dovrai tracciare la traccia per analizzare l'elevazione. Ecco una di queste mappe:
S12321
121234
348E96
Ogni cifra rappresenta un miglio quadrato di terra. S
è il punto iniziale, E
è il punto finale. Ogni numero rappresenta l'intensità delle variazioni di elevazione in quella regione.
- Il terreno numerato 1-3 costituisce un terreno pianeggiante.
- La terra numerata 4-6 costituisce terra collinare.
- La terra numerata 7-9 costituisce una catena montuosa.
Attraverso anni di esperienza nella costruzione di binari ferroviari, hai valutato che il costo di costruzione di binari (in dollari) soddisfa questa formula:
Cost_Per_Mile = 5000 + (1500 * (Elevation_Rating - 1))
Ciò significa che basarsi su determinati gradienti di elevazione ti costerà più denaro di quello che il governo offre, a volte sarà redditizio, a volte anche solo in pareggio.
Ad esempio, un miglio di pista su un gradiente di elevazione di 3 costa $ 8.000 per la costruzione, ma ricevi solo $ 5.000 per questo, quindi perdi $ 3000. Al contrario, costruire un miglio di pista su un dislivello di 7 costa $ 14.000, ma vieni pagato $ 20.000: un profitto di $ 6.000!
Ecco una mappa di esempio, oltre a due diversi percorsi possibili.
S29 S#9 S##
134 1#4 1##
28E 2#E 2#E
La prima traccia costa $ 30.000 dollari per essere costruita, ma il governo ti paga $ 30.000 per questo. Non trarre profitto da questa traccia.
D'altra parte, il secondo costa $ 56.500 per la costruzione, ma vieni pagato $ 62.500 per questo. Guadagni $ 6.000 da questa traccia.
Il tuo obiettivo: data una mappa di rilievo, trova il percorso più redditizio (o forse solo il meno costoso) dall'inizio alla fine. Se più percorsi si legano, ognuno di essi è una soluzione accettabile.
Dettagli del programma
Viene fornito un input di testo separato con una mappa rettangolare di numeri e un punto iniziale e finale. Ogni numero sarà un numero intero compreso tra 1 e 9. A parte questo, l'ingresso può essere fornito come preferisci, entro limiti ragionevoli.
L'output dovrebbe essere nello stesso formato dell'input, con i numeri in cui la traccia è stata costruita sostituita da un hash ( #
). A causa delle normative arbitrarie imposte da alcuni politici capricciosi, le tracce possono andare solo su percorsi orizzontali o verticali. In altre parole, non puoi tornare indietro o andare in diagonale.
Il programma dovrebbe essere in grado di risolvere in un ragionevole lasso di tempo (cioè <10 minuti) per mappe fino a 6 righe e 6 colonne.
Questa è una sfida del codice golf , quindi vince il programma più breve.
Ho un'implementazione di esempio (non golfizzata) .
I / O di esempio
S12321
121234
348E96
S12321
######
3##E##
S73891
121234
348453
231654
97856E
S#3###
1###3#
3#####
######
#####E
4
in 134
nell'esempio mappa essere 6
?