[Risolto]script Torre di HANOI

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

[Risolto]script Torre di HANOI

Messaggio da Saruman »

Ciao ragazzi,


Ho iniziato a studiare la  Programmazione Linguaggio Bash  un po per passione un po di più perché sono uno studente d'informatica e devo sostenere l'esame. Sinceramente nel corso non si è fatto un gran che. Sto iniziando ad approfondire ed ho iniziato a leggere

Codice: Seleziona tutto

http://wiki.ubuntu-it.org/Programmazione/LinguaggioBash?highlight=%28bash%29
non male per iniziare. Comunque in poche parole vorrei fare bella figura a questo esame, non voglio che mi fate l'esame.. voglio imparare e vorrei una mano e dei consigli.Mi aiutate?

Per prima cosa devo proporre  un progetto da svolgere per l'esame. Consigli!? Non deve essere esageratamente difficile. Per più chiarezza vi scrivo il programma del corso.

Codice: Seleziona tutto

Introduzione
Storia di Unix e di Linux
Struttura di Unix e di Linux
I comandi principali
La gestione dei file
La Shell Bash 
Vi evito di leggere tutto il forum..

Ho deciso per le torri di Hanoi, ma non capisco bene il codice mi date una mano? (good)

http://www.tldp.org/LDP/abs/html/recurn ... html#HANOI
Ultima modifica di Saruman il martedì 3 luglio 2007, 0:24, modificato 1 volta in totale.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script

Messaggio da Saruman »

Uno Script sulle torre di Hanoi è troppo difficile?
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: script

Messaggio da bite »

Visto che tra gli argomenti del corso c'è anche Struttura di Unix e di Linux, un progetto semplice semplice (forse troppo) potrebbe essere uno script che raccoglie e salva in un tgz i principali files di sistema di un'installazione... che so, /boot/config-*, boot/grub/menu.lst oppure /etc/lilo.conf (riconoscere quale dei due è presente), /etc/inittab quando c'è, /etc/fstab, /etc/X11/xorg.conf oppure XF86Config, /etc/network/interfaces, pesudofiles come /proc/version e /proc/cpuinfo, e chi più ne ha più ne metta.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script

Messaggio da Saruman »

Potrebbe essere carino...  :)

Io ho pensato ad uno script che crei una pagina web e dia informazioni sul sistema. qualcosa del genere

Codice: Seleziona tutto

#!/bin/bash
#creare_pagina - script che crea un file html con informazioni sul sistema

#####COSTANTI############
title="informazioni sul sistema per $HOSTNAME" 
adesso=$(date +"%x %r %Z") 
timbro_data="Aggiornamento a $adesso da $USER"

####Funzioni#############

function info_sistema
{
#????
}

function mostra_uptime
{
#????
}

function spazio_disco
{
#????
}

function spazio_home
{
#????
}

function mostra_info
{
#????
}

###### script principale

cat <<- _EOF_
<HTML>
<HEAD>
	<TITLE>
	$title
	</TITLE>
</HEAD>

<BODY>
	<H1>$title</H1>
	<P>$timbro_data
	$(info_sistema)
	$(mostra_uptime)
        $(spazio_disco)
	$(spazio_home) 
</BODY>
</HTML>
_EOF_ 
Ma ho già i primi problemi tipo non mi mi crea la pagine web boh! e poi devo studiare come creare le funzioni..
Che ne pensi?
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: script

Messaggio da bite »

Mi sembra una buona idea... potresti prendere spunto da swat, Samba Web Administration Tool (http://localhost:1601), che ti permette di vedere e modificare la configurazione di samba, o dal CUPS manager (http://localhost:631) che ti permette di incasinare le stampanti...
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script

Messaggio da Saruman »

Ok allora vado per questo!

P.S. come faccio a creare una pagina web con uno script ?

Qualche link per documentarmi? link per principianti ..  :-\
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: script

Messaggio da bite »

Con bash puoi creare facilmente un file html che poi puoi visualizzare in un browser. Creare una vera e propria pagina web è più difficile, bash non basta...
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: script

Messaggio da bite »

Questa è la torre di Hanoi.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script

Messaggio da Saruman »

Che figata la torre di Hanoi.  ;D ;D ;D

Ora me lo studio per benino in dettaglio..

Ma come faccio  con bash a creare facilmente un file html e  visualizzarlo  in un browser.?  :-\
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: script

Messaggio da bite »

Se torni su nell'esempio della torre di Hanoi ne trovi un sacco di altri, tra cui anche uno script che genera codice html.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script

Messaggio da Saruman »

Ho studiato un po..

La ricorsione è fantastica, ma non riesco a capire ancora bene passo passo cosa fa lo script di hanoi. http://www.tldp.org/LDP/abs/html/recurn ... html#HANOI Mi date una mano. (good)

Io ho letto qui! http://wiki.ubuntu-it.org/Programmazion ... %28bash%29 ma è poca robba.

un link in italiano dove spiega le funzioni e altra roba non c'è?

Magari qualche commento in più in italiano sullo script non sarebbe male  ;)

Grazie.
Ultima modifica di Saruman il mercoledì 27 giugno 2007, 13:23, modificato 1 volta in totale.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script Torre di HANOI

Messaggio da Saruman »

:-\

Uffi nessuno mi aiuta
Avatar utente
nuu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 394
Iscrizione: mercoledì 30 maggio 2007, 2:07

Re: script

Messaggio da nuu »

ybor4 ha scritto: Ma ho già i primi problemi tipo non mi mi crea la pagine web boh! e poi devo studiare come creare le funzioni..
In che senso non ti crea le pagine ? l'output di quello script e' codice html, basta redirezionare l'output su un file.html e la pagina e' creata.

esempio tuoscript > index.html

Ciao
nuu
Learn to pause -- or nothing worthwhile can catch up to you.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script Torre di HANOI

Messaggio da Saruman »

;)
Quello script è stato abbandonato.

Ora si è preso in considerazione questo.

Codice: Seleziona tutto

E_NOPARAM=66  # No parameter passed to script.
E_BADPARAM=67 # Illegal number of disks passed to script.
Moves=        # Global variable holding number of moves.
              # Modifications to original script.

dohanoi() {   # Recursive function.
    case $1 in
    0)
        ;;
    *)
        dohanoi "$(($1-1))" $2 $4 $3
        echo move $2 "-->" $3
	let "Moves += 1"  # Modification to original script.
        dohanoi "$(($1-1))" $4 $3 $2
        ;;
    esac
}

case $# in
1)
    case $(($1>0)) in     # Must have at least one disk.
    1)
        dohanoi $1 1 3 2
        echo "Total moves = $Moves"
        exit 0;
        ;;
    *)
        echo "$0: illegal value for number of disks";
        exit $E_BADPARAM;
        ;;
    esac
    ;;
*)
    echo "usage: $0 N"
    echo "       Where \"N\" is the number of disks."
    exit $E_NOPARAM;
    ;;
esac
A con capisco bene tutte le istruzioni..

A pensarci Bene potrei redirezionare  anche qui i risultati in un file html.

Va be qualche commento in piu sul codice?
Avatar utente
nuu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 394
Iscrizione: mercoledì 30 maggio 2007, 2:07

Re: script Torre di HANOI

Messaggio da nuu »

non capisci le istruzioni, o l'algoritmo per risolvere la torre di hanoi ?

Ciao
nuu
Learn to pause -- or nothing worthwhile can catch up to you.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script Torre di HANOI

Messaggio da Saruman »

Ciao,
>:(

L'algoritmo ricorsivo che risolve il problema delle torre di Hanoi l'ho capito.

Almeno per quello che ho letto qui http://it.wikipedia.org/wiki/Torre_di_Hanoi.

Non capisco com'è stata implementata la soluzione.

Per quello che ho capito io l'algoritmo parte da qui!

Codice: Seleziona tutto

case $# in
Si controlla che che ci sia almeno un disco, se i dischi sono 0 si entra qui.

Codice: Seleziona tutto

ase $(($1>0)) in     # Must have at least one disk.
    1)
        dohanoi $1 1 3 2
        echo "Total moves = $Moves"
        exit 0;
        ;;
e viene richiamata la funzione ricorsiva dohanoi. ma cosa significa?

Codice: Seleziona tutto

$1 1 3 2
Poi fa funzione ricorsiva ?

Codice: Seleziona tutto

dohanoi() {   # Recursive function.
    case $1 in
    0)
        ;;
    *)
        dohanoi "$(($1-1))" $2 $4 $3
        echo move $2 "-->" $3
	let "Moves += 1"  # Modification to original script.
        dohanoi "$(($1-1))" $4 $3 $2
        ;;
    esac
}
Non mi è chiara più precisamente dohanoi $(($1-1))" $2 $4 $3 ? Va be $2 $3 sono i pilastri ma il resto? come funziona?
Ultima modifica di Saruman il venerdì 29 giugno 2007, 10:46, modificato 1 volta in totale.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script Torre di HANOI

Messaggio da Saruman »

;)

Un link in italiano per le funzioni bash me lo consigliTE?
Avatar utente
royalz
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 438
Iscrizione: martedì 3 maggio 2005, 19:07
Località: Gin Lemon

Re: script Torre di HANOI

Messaggio da royalz »

se proprio non ci riesci..ho gli script per la torre di Hanoi in Java e C  ;D
al limite lasciami un messaggio privato
Avatar utente
nuu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 394
Iscrizione: mercoledì 30 maggio 2007, 2:07

Re: script Torre di HANOI

Messaggio da nuu »

ybor4 ha scritto: Non mi è chiara più precisamente dohanoi $(($1-1))" $2 $4 $3 ? Va be $2 $3 sono i pilastri ma il resto? come funziona?
beh dohanoi viene invocata prima sul valore iniziale degli anelli che gli passi tu. La dohanoi è strutturata in modo tale che ad ogni ricorsione viene cambiato l'ordine dei pilastri.
La prima volta viene chiamata staticamente con

Codice: Seleziona tutto

dohanoi $1 1 3 2
quindi dohanoi . Una volta all'interno della funzione dohanoi, il numero degli anelli viene decrementato di uno ad ogni ricorsione, vengono invertiti i pilastri (la funzione viene chiamata ricorsivamente con $2 $4 $3 ovvero nella prima ricorsione, nella seconda, di nuovo nella terza, etc). I pilastri vengono quindi mescolati ad ogni ricorsione, e il numero di ricorsioni si basa sul numero di anelli, che viene decrementato di uno ad ogni chiamata ricorsiva. Infatti la ricorsione decrementa $1 (il numero iniziale di anelli) finché non arriva a 0, e a quel punto fa il move degli anelli da un pilastro all'altro, ritorna al chiamante e risale lungo le chiamate ricorsive. Ogni qual volta $1 e' >0, il numero di anelli viene scalato di uno, vengono swappati i pilastri, e avviene la ricorsione, finché, una volta a 0, gli anelli vengono effettivamente spostati usando l'ordine dei pilastri raggiunto.

La cosa continua con la seconda chiamata ricorsiva all'interno della dohanoi stessa, con lo stesso principio.

Se non riesci pienamente a comprendere il funzionamento, ti consiglierei di non ostinarti troppo sulla torre di hanoi, ma di concentrarti su qualcosa di più accessibile e di immediato utilizzo!

Ciao
nuu
Learn to pause -- or nothing worthwhile can catch up to you.
Avatar utente
Saruman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2378
Iscrizione: venerdì 16 marzo 2007, 22:29

Re: script Torre di HANOI

Messaggio da Saruman »

::)

Non sono il tipo che si arrende facilmente, ora faccio qualche prova su carta e penna e poi vediamo.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti