Ridurre al massimo

Il forum di Base5, dove è possibile postare problemi, quiz, indovinelli, rompicapo, enigmi e quant'altro riguardi la matematica ricreativa e oltre.

Moderatori: Gianfranco, Bruno

Rispondi
Bruno
Livello 10
Livello 10
Messaggi: 2020
Iscritto il: lun nov 21, 2005 6:07 pm
Località: Bologna

Ridurre al massimo

Messaggio da Bruno »

Scriviamo un numero abbastanza grande e chiamiamolo N.
Supponiamo che N abbia m cifre e quindi scegliamo un secondo
numero, r, che sia però minore di m.
Ora, da N cancelliamo r cifre, riavvicinando quelle rimanenti (ma
senza cambiare l'ordine), in modo tale che il numero risultante
sia massimo.
Come facciamo?

:wink:
(Bruno)

...........................
Invisibile un vento
l'ha apena sfioragia
sospension d'un momento;
e la bola iridessente gera 'ndagia.
{Biagio Marin}
................................................................
Meglio soluzioni sbagliate che risposte esatte.
{Rudi Mathematici}

??

complimenti

Messaggio da ?? »

complimenti per la chiarissima spiegazione

delfo52
Livello 9
Livello 9
Messaggi: 1556
Iscritto il: mer mag 25, 2005 4:19 pm
Località: bologna

Messaggio da delfo52 »

io farei così:
controllo in che posizione appare la prima cifra 9 nel numero N.
Calcolo quante cifre ci sono dall'inizio al primo 9; se sono meno di m, le cancello tutte
proseguo a calcolare l'intervallo tra il primo 9 e il secondo, e via così

E' solo un primo approccio da sgrossare
Enrico

jepa
Livello 3
Livello 3
Messaggi: 91
Iscritto il: ven apr 07, 2006 4:15 pm

Messaggio da jepa »

Concordo con delfo, chiaramente se il numero di cifre da cancellare mi permette di arrivare ad incontrare un 9 altrimenti si cancella fino a trovare il numero maggiore in ordine.
Dopodichè con le cifre avanzate da cancellare si ripete la stessa operazione negli intervalli successivi fino ad esaurirle.

delfo52
Livello 9
Livello 9
Messaggi: 1556
Iscritto il: mer mag 25, 2005 4:19 pm
Località: bologna

Messaggio da delfo52 »

caso limite: cancellare una sola cifra.
si cancella la prima cifra la cui successiva è superiore

è possibile-probabile che iterando il procedimento si arrivi, passetto dopo passetto, a quanto proposto prima

se fosse vero penso che il programma esecutivo dovrebbe essere di una semplicità disarmante.
Se ho detto fesserie, scusatemi: ho avuto una pessima giornata
Enrico

panurgo
Livello 9
Livello 9
Messaggi: 1521
Iscritto il: sab nov 19, 2005 3:45 pm
Località: Padova

Messaggio da panurgo »

delfo52 ha scritto:caso limite: cancellare una sola cifra.
si cancella la prima cifra la cui successiva è superiore

è possibile-probabile che iterando il procedimento si arrivi, passetto dopo passetto, a quanto proposto prima

se fosse vero penso che il programma esecutivo dovrebbe essere di una semplicità disarmante.
Se ho detto fesserie, scusatemi: ho avuto una pessima giornata
pessima giornata, ma ottima risposta!

while (r > 0)
{
i = 1
while ((N > N[i+1]) or (i == m))
{
i = i + 1
}
if (i < m) then
{
for j = i to m - 1
{
N = N[i+1]
}
}
N[m] = 0
m = m - 1
r = r - 1
}

Non è il massimo dell'efficienza ma è compatto

P.S.: è uno pseudocodice simile al C
il panurgo

Principio di Relatività: $\mathbb{m} \not \to \mathbb{M} \, \Longleftrightarrow \, \mathbb{M} \not \to \mathbb{m}$
"Se la montagna non va a Maometto, Maometto NON va alla montagna"

Rispondi