Ma si certo, però son sempre due righe in menoXxshark888xX ha scritto:Beh togliere gli spazi etc.. Non significa "accorciare" lo script
#1 [2014-12-07] Mini Contest di programmazione - to_bin
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
- Xxshark888xX
- Membro d'elite
- Messaggi: 1497
- Iscritto il: 30/05/2012, 19:17
- Specialità: Un poco di tutto
- Uso: GM:Studio 1.4 Pro
- Località: Earth
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Io ho creato lo script con gm8.1 e vedo che in gm8.1 la funzione "string_set_byte_at" non c'èXeryan ha scritto:Switch ? Pff dilettanti
Codice: Seleziona tutto
var String = "", pos, binary, number, dec = string(argument0); for (var i=1; i<=string_length(dec); i++) { number = real(string_char_at(dec, i)); binary = "0000"; pos = 0; while (number > 0) { binary = string_set_byte_at(binary, 4-pos, ord(string(number mod 2))); number = number div 2; pos++; } String += binary; } return String;
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Eh infatti, qui la competizione si divide, chi lo ha fatto con versioni precedenti a Studio e chi con StudioXxshark888xX ha scritto:Io ho creato lo script con gm8.1 e vedo che in gm8.1 la funzione "string_set_byte_at" non c'èXeryan ha scritto:Switch ? Pff dilettanti
Codice: Seleziona tutto
var String = "", pos, binary, number, dec = string(argument0); for (var i=1; i<=string_length(dec); i++) { number = real(string_char_at(dec, i)); binary = "0000"; pos = 0; while (number > 0) { binary = string_set_byte_at(binary, 4-pos, ord(string(number mod 2))); number = number div 2; pos++; } String += binary; } return String;
Edit:
Ora che leggo bene il codice hai praticamente usato l'algoritmo classico di conversione però secondo me il tuo codice è più lento, sono comunque due cicli...
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Come verrà testata la velocità?Tizzio ha scritto:Settimanalmente vi proporrò un semplice problema e dovrete implementarlo in uno script e ne verrà testata la velocità
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
Re: [2014-12-07] Mini Contest di programmazione
Il tuo è probabilmente il più lento di tutti...Xeryan ha scritto:Switch ? Pff dilettanti
- guidox
- GMI Honor
- Messaggi: 5765
- Iscritto il: 26/07/2009, 17:23
- Specialità: programmazione
- Uso: GM:Studio 1.4 Android
- Località: Marche
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Un altro modo
Codice: Seleziona tutto
var N,s,n;
N=argument0;
s="";
while(N>0) {
n=N mod 10;
s=string(n div 8 mod 2)+string(n div 4 mod 2)+string(n div 2 mod 2)+string(n mod 2)+s;
N=N div 10;
}
return(s);
- Xxshark888xX
- Membro d'elite
- Messaggi: 1497
- Iscritto il: 30/05/2012, 19:17
- Specialità: Un poco di tutto
- Uso: GM:Studio 1.4 Pro
- Località: Earth
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Qualcosa mi dice che guidox per ora è in testaguidox ha scritto:Un altro modoCodice: Seleziona tutto
var N,s,n; N=argument0; s=""; while(N>0) { n=N mod 10; s=string(n div 8 mod 2)+string(n div 4 mod 2)+string(n div 2 mod 2)+string(n mod 2)+s; N=N div 10; } return(s);
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
A a a a a se inserisco 0 non funzionaguidox ha scritto:Un altro modoCodice: Seleziona tutto
var N,s,n; N=argument0; s=""; while(N>0) { n=N mod 10; s=string(n div 8 mod 2)+string(n div 4 mod 2)+string(n div 2 mod 2)+string(n mod 2)+s; N=N div 10; } return(s);
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
- aironenero
- GMI Guru
- Messaggi: 2612
- Iscritto il: 02/05/2012, 14:56
- Specialità: Unity 3D
- Uso: GM:Studio 1.4 Pro
- Località: Ispica
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Ah beh per me lo switch è il più veloce e comodo. (oltre che il più semplice da ideare), dato che la competizione è sulla velocità..
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Sono d'accordoaironenero ha scritto:Ah beh per me lo switch è il più veloce e comodo. (oltre che il più semplice da ideare), dato che la competizione è sulla velocità..
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
- civic71
- GMI Advanced
- Messaggi: 2210
- Iscritto il: 23/10/2003, 17:31
- Specialità: Risotto con zucchine
- Uso: GM:Studio 1.4 Pro
- Località: Jesolo (venezia)
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
bravi , io non conosco ste cose e funzioni come mod ma mi piace vedere sti codici .
Re: [2014-12-07] Mini Contest di programmazione
Potresti renderlo ancora più veloce usando chr invece di string e &/>> invece di div/mod (cioè chr(48 + ((n & (1 << cifra)) >> cifra), al posto di 1 << cifra si può mettere 1, 2, 4 come hai fatto nel codice, in quel caso 2, 4, 8).guidox ha scritto:Un altro modoCodice: Seleziona tutto
var N,s,n; N=argument0; s=""; while(N>0) { n=N mod 10; s=string(n div 8 mod 2)+string(n div 4 mod 2)+string(n div 2 mod 2)+string(n mod 2)+s; N=N div 10; } return(s);
Se questo sia più veloce o più lento di quello di doom dipende più da GM che dall'algoritmo in sè. Gli switch possono essere implementati in modo molto efficiente nei linguaggi compilati (per esempio con le jump tables), ma probabilmente in quel caso GM compara le stringhe 10 volte, e dunque potrebbe essere più lento di quello di guifus.Ah beh per me lo switch è il più veloce e comodo. (oltre che il più semplice da ideare), dato che la competizione è sulla velocità..
- guidox
- GMI Honor
- Messaggi: 5765
- Iscritto il: 26/07/2009, 17:23
- Specialità: programmazione
- Uso: GM:Studio 1.4 Android
- Località: Marche
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Molto intelligente Nix!
Oppure ancora... Ma credo che sia nettamente più lento...
Comunque ragazzi suvvia! Questa "competizione" non serve per decretare un vincitore, ma per imparare qualcosa! Quindi cercate di assimilare nuove nozioni invece di fossilizzarvi sul vostro switch .
@civic71: Allora impara subito che vuol dire: serve a restituire il resto della divisione per interi. Come quando facevi le divisioni alle elementari.
34 / 5 = 6 resto 4
5 / 3 = 1 resto 2
quindi...
34 mod 5 = 4
5 mod 3 = 2
Tutto qui, poi le applicazioni sono più interessanti
Per esempio è utile per creare un timer minuti:secondi.
Invece di creare due variabili "minuti" e "secondi", ne creo una sola "seconditot". Poi per ricavare le altre due mi basterà fare:
minuti = seconditot div 60;
secondi = seconditot mod 60;
Lascia a te capire a cosa serve div
Oppure ancora... Ma credo che sia nettamente più lento...
Codice: Seleziona tutto
var N,s,n;
N=argument0;
s="";
while(N>0) {
n=N mod 10;
s=string_replace_all(string_format(((n & 8) >> 3)*1000+((n & 4) >> 2)*100+((n & 2) >> 1)*10+(n & 1),4,0)," ","0")+s;
N=N div 10;
}
return(s);
@civic71: Allora impara subito che vuol dire: serve a restituire il resto della divisione per interi. Come quando facevi le divisioni alle elementari.
34 / 5 = 6 resto 4
5 / 3 = 1 resto 2
quindi...
34 mod 5 = 4
5 mod 3 = 2
Tutto qui, poi le applicazioni sono più interessanti
Per esempio è utile per creare un timer minuti:secondi.
Invece di creare due variabili "minuti" e "secondi", ne creo una sola "seconditot". Poi per ricavare le altre due mi basterà fare:
minuti = seconditot div 60;
secondi = seconditot mod 60;
Lascia a te capire a cosa serve div
- Bombertoman
- Membro super
- Messaggi: 595
- Iscritto il: 14/07/2014, 18:35
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Località: Manfredonia (FG)
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
doom13 ha scritto:A a a a a se inserisco 0 non funzionaguidox ha scritto:Un altro modoCodice: Seleziona tutto
var N,s,n; N=argument0; s=""; while(N>0) { n=N mod 10; s=string(n div 8 mod 2)+string(n div 4 mod 2)+string(n div 2 mod 2)+string(n mod 2)+s; N=N div 10; } return(s);
Codice: Seleziona tutto
var N,s,n;
N=argument0;
if (N=0)
s="0000"
else
{
s="";
while(N>0) {
n=N mod 10;
s=string(n div 8 mod 2)+string(n div 4 mod 2)+string(n div 2 mod 2)+string(n mod 2)+s;
N=N div 10;
}
}
return(s);
Project GG... vediamo se riesco a finire un gioco per una volta...
- civic71
- GMI Advanced
- Messaggi: 2210
- Iscritto il: 23/10/2003, 17:31
- Specialità: Risotto con zucchine
- Uso: GM:Studio 1.4 Pro
- Località: Jesolo (venezia)
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Ha, capito e bello ed utile .minuti = seconditot div 60;
secondi = seconditot mod 60;
Lascia a te capire a cosa serve div
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Uhm si però è più figo lo switch
A parte gli scherzi, magari è più veloce lo script di guidox però a mio parere, non voglio fare il grande, il codice come lo ho impostato io è più pulito e capisci subito quello che fa.. Non conta anche questo per un buon script?
A parte gli scherzi, magari è più veloce lo script di guidox però a mio parere, non voglio fare il grande, il codice come lo ho impostato io è più pulito e capisci subito quello che fa.. Non conta anche questo per un buon script?
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
- aironenero
- GMI Guru
- Messaggi: 2612
- Iscritto il: 02/05/2012, 14:56
- Specialità: Unity 3D
- Uso: GM:Studio 1.4 Pro
- Località: Ispica
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
umh, avevo dimenticato dell'esistenda del mod... (che poi dovrebbe stare per modulo)...guidox ha scritto:Molto intelligente Nix!
Oppure ancora... Ma credo che sia nettamente più lento...Comunque ragazzi suvvia! Questa "competizione" non serve per decretare un vincitore, ma per imparare qualcosa! Quindi cercate di assimilare nuove nozioni invece di fossilizzarvi sul vostro switch .Codice: Seleziona tutto
var N,s,n; N=argument0; s=""; while(N>0) { n=N mod 10; s=string_replace_all(string_format(((n & 8) >> 3)*1000+((n & 4) >> 2)*100+((n & 2) >> 1)*10+(n & 1),4,0)," ","0")+s; N=N div 10; } return(s);
@civic71: Allora impara subito che vuol dire: serve a restituire il resto della divisione per interi. Come quando facevi le divisioni alle elementari.
34 / 5 = 6 resto 4
5 / 3 = 1 resto 2
quindi...
34 mod 5 = 4
5 mod 3 = 2
Tutto qui, poi le applicazioni sono più interessanti
Per esempio è utile per creare un timer minuti:secondi.
Invece di creare due variabili "minuti" e "secondi", ne creo una sola "seconditot". Poi per ricavare le altre due mi basterà fare:
minuti = seconditot div 60;
secondi = seconditot mod 60;
Lascia a te capire a cosa serve div
- Bombertoman
- Membro super
- Messaggi: 595
- Iscritto il: 14/07/2014, 18:35
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Località: Manfredonia (FG)
- Contatta:
Re: [2014-12-07] Mini Contest di programmazione
Il mod sarebbe il classico % nel javascript e nel c++... il div invece mi è nuovo, non sapevo esistesse una funzione che restituisce il risultato intero di una divisione senza il resto...
Project GG... vediamo se riesco a finire un gioco per una volta...
Re: [2014-12-07] Mini Contest di programmazione
È come floor(x / y), soltanto più efficiente.Bombertoman ha scritto:non sapevo esistesse una funzione che restituisce il risultato intero di una divisione senza il resto...
Chi c’è in linea
Visitano il forum: Nessuno e 15 ospiti