Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 30 di 34

Discussione: Passatempo da baita di montagna!



  1. #1

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Passatempo da baita di montagna!

    Scrivere in A1 una formula che generi una stringa casuale lunga 9 caratteri (tra A e Z) di cui 8 siano uguali ed uno solo diverso.
    Scrivere in B1 una formula che indichi la posizione, all'interno della stringa in A1, dell'unico carattere diverso.

    Esempio
    A
    B
    1
    QQQQEQQQQ
    5
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  2. #2
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184
    OT
    l'hai presa troppo alta sta baita, scendi di quota , troppo poco ossigeno... :176:

    Però, bello come quesito, al momento non so da dove iniziare

  3. #3
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184
    allora, la butto lì ma non è sicuramente quella definitiva e/o che tu hai pensato:

    =RIMPIAZZA(RIPETI(CODICE.CARATT(CASUALE.TRA(65;90));9);CASUALE.TRA(1;9);1;CODICE.CARATT(CASUALE.TRA(65;90)))
    ha il difetto che potrebbe non dare la lettera diversa (una volta su 625, 0,16%).
    Ultima modifica fatta da:ninai; 11/08/15 alle 13:19

  4. #4

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    ha il difetto che potrebbe non dare la lettera diversa
    E ti pare poco????!!! cestianta!

    Vediamo di impegnarci di più, siamo mica qui a pettinare i porcospini!
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  5. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Scrivere in A1 una formula che generi una stringa casuale lunga 9 caratteri (tra A e Z) di cui 8 siano uguali ed uno solo diverso.
    Scrivere in B1 una formula che indichi la posizione, all'interno della stringa in A1, dell'unico carattere diverso.

    Esempio
    A
    B
    1
    QQQQEQQQQ
    5
    Questa è bella!!! :235:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  6. #6
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184
    anche per la B1, credo di averla fatta ingarbugliata:
    =MATR.SOMMA.PRODOTTO((CONFRONTA(STRINGA.ESTRAI(A1;RIF.RIGA(A1:A9);1);STRINGA.ESTRAI(A1;RIF.RIGA(A1:A9);1);0)>1)*RIF.RIGA(A1:A9))

    matriciale

    oggi mi gira tutto difficile

    EDIT
    come non detto, autocestinata, neanche questa funziona sempre, basta , oggi niente excel........

    volendola proprio rattoppare:
    =SE(MATR.SOMMA.PRODOTTO((CONFRONTA(STRINGA.ESTRAI(A1;RIF.RIGA(A1:A9);1);STRINGA.ESTRAI(A1;RIF.RIGA(A1:A9);1);0)>1)*RIF.RIGA(A1:A9))=44;1;MATR.SOMMA.PRODOTTO((CONFRONTA(STRINGA.ESTRAI(A1;RIF.RIGA(A1:A9);1);STRINGA.ESTRAI(A1;RIF.RIGA(A1:A9);1);0)>1)*RIF.RIGA(A1:A9)))
    Ultima modifica fatta da:ninai; 11/08/15 alle 13:48

  7. #7

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    oggi mi gira tutto difficile
    è colpa dell'aria di mare, vai in montagna e vedrai che la tua mente si aprirà e verrà innondata di buone idee!!

  8. #8

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Alla faccia del passatempo... :48:
    Ci sto provando da un'oretta ma mi sfugge qualcosina (direi più di qualcosina :142:).
    Comunque provo ancora.....

  9. #9
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184
    Con la dritta data nella altro argomento ho accorciato la formula in b1 ma resto sempre sospeso per la seconda lettera in a1, casuale e diversa dall altra. Ma con il tel mi sto rincoglionendo a scrivere. Sono senza connessione nel PC. Ma resto a guardare gli sviluppi

  10. #10

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da ninai Visualizza Messaggio
    ...Sono senza connessione nel PC. Ma resto a guardare gli sviluppi
    Bene, aspettiamo di vedere se ges o cromagno hanno qualche proposta da avanzare, altrimenti domani posto la mia soluzione.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  11. #11

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301
    Niente .... :262: con le mie prove riesco a soddisfare formalmente la richiesta "Scrivere in A1 una formula che generi una stringa casuale lunga 9 caratteri (tra A e Z) di cui 8 siano uguali ed uno solo diverso" ma il carattere diverso posso metterlo alla fine o all'inizio della stringa:

    =RIPETI(CODICE.CARATT(CASUALE()*26+97);8)&CODICE.CARATT(CASUALE()*26+97)

    =CODICE.CARATT(CASUALE()*26+97)&RIPETI(CODICE.CARATT(CASUALE()*26+97);8)
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  12. #12

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    no, no no.... sempre lo stesso problema, non ho la certezza al 100% che una lettera sia sempre differente dalle altre....
    Riproverò più tardi ma non sono ottimista


    [EDIT]
    Forse ho trovato un'altra strada... ottenere il numero casuale con questa formula:
    =(ADESSO()*100000 - INT(ADESSO()*100000))*25+66


    almeno posso gestirlo (credo)..
    Ora però devo scappare. A dopo...

  13. #13

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Una precisazione.

    E' evidente che la generazione della stringa richiesta non potrà mai essere casuale in senso stretto (già la funzione Casuale e Casuale.Tra in realtà sono "pseudo-casuali").
    Se ne deduce, quindi, che qualche "stratagemma", per ottenere una stringa il più possibile casuale, debba comunque essere utilizzato.

    Chiarisco quindi le caratteristiche che devono avere le stringhe generate, e quindi i vincoli per "il motore" che le genera.

    1) Non è assolutamente consentito che una stringa sia composta da 9 caratteri uguali. La possibilità che ciò avvenga deve essere nulla!

    2) Dall'esame di una sequenza ragionevolmente lunga (10, 20, 50 ...) di stringhe generate, non si deve "percepire", (neanche in parte) la logica di generazione sottostante.Ad esempio se le stringhe generate fossero
    MMMNMMMMM, FFGFFFFFF, SRRRRRRRR, XXXXXXXYX ....., si capirebbe chiaramente che il carattere singolo è banalmente quello immediatamente successivo al carattere ripetuto.

    Ma anche da una sequenza tipo
    MMMQMMMMM, FFRFFFFFF, URRRRRRRR, AAAAAAAYA ..., si capirebbe chiaramente che il carattere singolo è sempre e comunque maggiore di quello ripetuto. Quindi la formula di generazione non sarebbe abbastanza sofisticata.

    Concludendo, la formula richiesta deve portare ad una sequenza di stringhe che, anche ad una attenta analisi, sembri del tutto casuale.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  14. #14

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Una precisazione.

    E' evidente che la generazione della stringa richiesta non potrà mai essere casuale in senso stretto (già la funzione Casuale e Casuale.Tra in realtà sono "pseudo-casuali").
    Se ne deduce, quindi, che qualche "stratagemma", per ottenere una stringa il più possibile casuale, debba comunque essere utilizzato.

    Chiarisco quindi le caratteristiche che devono avere le stringhe generate, e quindi i vincoli per "il motore" che le genera.

    1) Non è assolutamente consentito che una stringa sia composta da 9 caratteri uguali. La possibilità che ciò avvenga deve essere nulla!

    2) Dall'esame di una sequenza ragionevolmente lunga (10, 20, 50 ...) di stringhe generate, non si deve "percepire", (neanche in parte) la logica di generazione sottostante.Ad esempio se le stringhe generate fossero
    MMMNMMMMM, FFGFFFFFF, SRRRRRRRR, XXXXXXXYX ....., si capirebbe chiaramente che il carattere singolo è banalmente quello immediatamente successivo al carattere ripetuto.

    Ma anche da una sequenza tipo
    MMMQMMMMM, FFRFFFFFF, URRRRRRRR, AAAAAAAYA ..., si capirebbe chiaramente che il carattere singolo è sempre e comunque maggiore di quello ripetuto. Quindi la formula di generazione non sarebbe abbastanza sofisticata.

    Concludendo, la formula richiesta deve portare ad una sequenza di stringhe che, anche ad una attenta analisi, sembri del tutto casuale.
    Le cose si complicano ....:235:
    Aspetta scossa però a mettere la soluzione .... lasciaci sbattere un altro poco la testa
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  15. #15

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao,
    son riuscito a trovare un buco per postare la formula da mettere in A1...

    =RIMPIAZZA(RIPETI(CODICE.CARATT(INT((ADESSO()*10^6-INT(ADESSO()*10^6))*25+65));9);(CASUALE()*9)+1;1;SE((ADESSO()*10^6-INT(ADESSO()*10^6))>0,5;CODICE.CARATT(INT(((ADESSO()*10^6-INT(ADESSO()*10^6))-0,5)*25+65));CODICE.CARATT(INT(((ADESSO()*10^6-INT(ADESSO()*10^6))+0,5)*25+65))))

    in effetti è un pò lunghetta ma dovrebbe garantire la diversità di una lettera....

    Per quella in B1 ci sto ancora lavorando (vorrei snellire almeno questa)...
    Ultima modifica fatta da:cromagno; 13/08/15 alle 12:22

  16. #16
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184
    Ciao

    Già vedo Scossa nella baita, con popcorn e birra che se la gode. :87:_
    Sono convinto che la soluzione è del tutto diversa da quelle da noi percorse.
    ho in mente dei rif.colonna() esclusi i multipli di 27 ma tanta nebbia attorno.

    Per la B1 ho trovato una scorciatoia alla mia precedente:
    =TROVA(SOSTITUISCI(A1;STRINGA.ESTRAI(A1;2-IDENTICO(DESTRA(A1;1);SINISTRA(A1;1));1);"");A1)
    ma credo sia accorciabile ulteriormente

    Per A1, resto sempre bloccato sulla seconda estrazione casuale che escluda la lettera estratta prima (sospetto che questo aspetto non centri niente).

    Vista la mia incalzante gastrite, a differenza di GES, vorrei porre fine alle "sofferenze" ed auspico una soluzione da parte di Scossa.

  17. #17

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da cromagno
    in effetti è un pò lunghetta ma dovrebbe garantire la diversità di una lettera....
    Effettivamente è lunghetta, ma mi sembra conforme ai requisiti che ho esposto: BRAVO!

    Aspettiamo ges ....


    Citazione Originariamente Scritto da ninai
    ma credo sia accorciabile ulteriormente ....
    Mi sembra valida, bella e già ottimizzata!

    ...Vista la mia incalzante gastrite, a differenza di GES, vorrei porre fine alle "sofferenze" ...
    Ok, allora non ti dirò che, sebbene la tua sia già ottimizzata, la mia è comunque più breve, così stai sereno e la gastrite non peggiora :90:
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  18. #18

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Per la B1 rimango fedele alla formula usata per prima nell'altro passatempo. Più che essere fedele direi che mi accontento perchè questi 9 caratteri sto iniziando a vederli anche in sogno (quella di ninai mi piace :) ).

    Quindi, matriciale in B1:
    =CONFRONTA(FALSO;STRINGA.ESTRAI(A1;RIF.RIGA(A1:A9);1)=SINISTRA(A1;1);0)

    [EDIT]
    No, come non detto.
    Se la lettera diversa è in prima posizione, il risultato è sbagliato.
    Bisognerebbe allungarla un pò... quindi non va bene.
    Ultima modifica fatta da:cromagno; 13/08/15 alle 15:10

  19. #19

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301
    Bene, rimodellando la mia formula che avevo postato sopra credo di avercela fatta a trovare la soluzione da inserire in A1:

    =RIMPIAZZA(RIPETI(CODICE.CARATT(CASUALE()*26+97);9);CASUALE.TRA(1;9);1;CODICE.CARATT(CASUALE()*26+97))
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  20. #20

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    credo di avercela fatta a trovare la soluzione da inserire in A1
    non va bene: potrebbe generare una stringa di 9 caratteri uguali (su una ventina di tentativi è capitato 3 volte).

    Infatti le due chiamate a
    Codice: 
    CODICE.CARATT(CASUALE()*26+97
    potrebbero generare due caratteri uguali.

    Vuoi altro tempo per tentare?
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  21. #21

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301
    Dai ... allora mi arrendo ... non vorrei aggravare le già critiche condizioni di ninai, che saluto! :167:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  22. #22

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Dai ... allora mi arrendo ... non vorrei aggravare le già critiche condizioni di ninai, che saluto! :167:
    Bene, allora andiamo con ordine partendo dalla formula in A1.

    Premetto che la soluzione di cromagno, che utilizza intelligentemente la funzione Adesso(), è ottima e sicuramente originale.
    La mia è più classica (e solo leggermente più corta di quella di cromagno) e si basa sul banale utilizzo di CASUALE.TRA, ma con un semplice stratagemma (il cui meccanismo lascio a voi il compito di interpretare) per garantire il rispetto dei vincoli che ho elencato in post precedente:
    =SCEGLI(CASUALE.TRA(1;2);RIMPIAZZA(RIPETI(CODICE.CARATT(CASUALE.TRA(65;80));9);CASUALE.TRA(1;9);1;CODICE.CARATT(CASUALE.TRA(81;90)));RIMPIAZZA(RIPETI(CODICE.CARATT(CASUALE.TRA(81;90));9);CASUALE.TRA(1;9);1;CODICE.CARATT(CASUALE.TRA(65;80))))

    Per quanto riguarda la formula in B1, la mia soluzione è la seguente (non matriciale):
    =CONFRONTA(8;LUNGHEZZA(SOSTITUISCI(A1;STRINGA.ESTRAI(A1;{1.2.3.4.5.6.7.8.9};1);""));0)
    che si può abbreviare ricorrendo ad una formula matriciale (da confermare con ctrl+maius+invio):
    =CONFRONTA(8;LUNGHEZZA(SOSTITUISCI(A1;STRINGA.ESTRAI(A1;RIF.RIGA($1:$9);1);""));0)

    Anche per questa formula lascio a voi il compito di interpretarne il funzionamento.
    Ultima modifica fatta da:scossa; 14/08/15 alle 19:19 Motivo: corretta formula
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  23. #23

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301
    Presumo che hai scelto =SCEGLI(CASUALE.TRA(1;2) per evitare situazioni di identità di tutte le lettere anche la parte centrale della formula (che era sulla falsariga di quella a cui stavo lavorando) mi sembra già buona da sola:

    =RIMPIAZZA(RIPETI(CODICE.CARATT(CASUALE.TRA(65;80));9);CASUALE.TRA(1;9);1;CODICE.CARATT(CASUALE.TRA(81;90)))

    l'ho provata almeno 30 volte e ha funzionato.

    La soluzione in B1 è veramente
    geniale!
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  24. #24
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184
    Mah, mi aspettavo qualcosa di "rivoluzionario", invece hai solo usato un trucchetto a limite del "lecito".

    La casualità, a mio avviso, è fortemente compromessa. Io ritenevo ovvio che le lettere, sia le 8 che quella singola, dovessero essere entrambe tra la A e la Z.
    Tu hai "splittato" l'alfabeto.
    Mi dispiace ma ti contesto, mi devi rimborsare ore di rompicapo. :225:

    Sulla formula in B1, niente da dire, è proprio bella e per me originale.:208:

  25. #25

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    La casualità, a mio avviso, è fortemente compromessa. Io ritenevo ovvio che le lettere, sia le 8 che quella singola, dovessero essere entrambe tra la A e la Z ....
    Probabilmente non hai letto i vincoli esposti in un mio post sopra o hai male interpretato la formula:
    1 volta su 2 le 8 lettere sono tra A e P e la singola tra Q e Z; 1 volta su 2 le 8 lettere sono tra L e Z e la singola tra A e K; quindi qualsiasi lettera tra la A-Z potrà essere la singola o la ripetuta.

    Pertanto
    Mi dispiace ma ti contesto, mi devi rimborsare ore di rompicapo
    obiezione respinta, anche perché il titolo della discussione è "Passatempo da baita di montagna!" e non "Passatempo da bivacco ad alta quota!" :90:
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  26. #26
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184
    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    1 volta su 2 le 8 lettere sono tra A e P e la singola tra Q e Z ........
    Appunto!! , se la lettera ripetuta è dalla A alla P, l'altra è obbligata ad essere dalla dalla Q alla Z o viceversa, ti sembra poco come vincolo??? di volta in volta hai attribuito una parte di alfabeto ad una ed una parte all'altra lettera. Tu mi "DEVI" escludere solo la lettera ripetuta, le altre lettere le "VOGLIO" tutte candidabili come lettera singola. :190: :176::142::295:


    NB
    La mia prima ipotesi era, tranne per l'espediente dell' "alfabeto diviso", identica alla tua. E tu me l'hai cestinata con estrema sufficienza (come se non centrasse niente), mi hai (volutamente) catapultato "fuori orbita", questo è motivo di grande offesa :190:

  27. #27

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    La mia prima ipotesi era, tranne per l'espediente dell' "alfabeto diviso", identica alla tua. E tu me l'hai cestinata con estrema sufficienza
    leggi bene, leggi bene, io l'ho cestinata perché
    ha il difetto che potrebbe non dare la lettera diversa
    cioè potrebbe dare una stringa di 9 lettere uguali!

    Tu mi "DEVI" escludere solo la lettera ripetuta, le altre lettere le "VOGLIO" tutte candidabili come lettera singola
    Senza ricorrere al VBA la vedo dura, magari XOR LX potrebbe inventare qualcosa.

    Comunque, ho condotto una analisi su 20000 stringhe generate, sia con la mia che con quella di cromagno (l'unica proposta alternativa), e devo purtroppo dire che quest'ultima a volte genera una stringa non valida in quanto contiene caratteri diversi da A-Z:

    A
    B
    C
    D
    E
    F
    G
    H
    I
    J
    K
    L
    M
    N
    1
    scossa
    cromagno
    2
    OZOOOOOOO
    2
    scossa
    sequenza
    pos.
    singola
    ripetuta
    OK
    sequenza
    pos.
    singola
    ripetuta
    ERRORE
    3
    MMMMMMMMH
    9
    H M HHHHHHHHT
    9
    T H
    4
    OCOOOOOOO
    2
    cromagno QQQQJQQQQ
    5
    J Q HHHHHTHHH
    6
    T H
    5
    JJJYJJJJJ
    4
    Y J HHHHHTHHH
    6
    T H
    6
    HHHHHHHRH
    8
    R H HHHHHHTHH
    7
    T H
    7
    doppio click per avviare il ciclo
    PPPPUPPPP
    5
    U P HTHHHHHHH
    2
    T H
    8
    QQQQQQQQC
    9
    C Q HHTHHHHHH
    3
    T H
    9
    SOOOOOOOO
    1
    S O KWKKKKKKK
    2
    W K
    10
    JXJJJJJJJ
    2
    X J WKKKKKKKK
    1
    W K
    11
    KKKKZKKKK
    5
    Z K WKKKKKKKK
    1
    W K
    12
    UUUUGUUUU
    5
    G U WKKKKKKKK
    1
    W K
    13
    TTTTKTTTT
    5
    K T VJVVVVVVV
    2
    J V
    14
    WWWWWKWWW
    6
    K W VVVVVVJVV
    7
    J V
    15
    PPPPPPPXP
    8
    X P VVV7VVVVV
    4
    7
    V errore
    16
    AAAAAAAAW
    9
    W A CCCCCCPCC
    7
    P C
    17
    YBYYYYYYY
    2
    B Y CCCCPCCCC
    5
    P C
    18
    RRRRRRRRC
    9
    C R CCCCCCCCP
    9
    P C
    19
    UUUUUUUUC
    9
    C U CCCCCCPCC
    7
    P C
    20
    AAAAAAUAA
    7
    U A CCCCCPCCC
    6
    P C



    Scaricate il file Lettera_Diversa3.xlsb con cui potrete notare la notevole differenza di comportamento tra la mia e quella di cromagno e potrete verificare che, anche su test di solo 100 stringhe (cambiando il limite del ciclo for), tutte le lettere A-Z sono presenti sia come singole che come ripetute, al contrario di quelle generate dal codice di cromagno.

    N.B.: la formula che ho indicato nella mia proposta contiene un errore, quella corretta è:
    =SCEGLI(CASUALE.TRA(1;2);RIMPIAZZA(RIPETI(CODICE.CARATT(CASUALE.TRA(65;80));9);CASUALE.TRA(1;9);1;CODICE.CARATT(CASUALE.TRA(81;90)));RIMPIAZZA(RIPETI(CODICE.CARATT(CASUALE.TRA(81;90));9);CASUALE.TRA(1;9);1;CODICE.CARATT(CASUALE.TRA(65;80))))

    come scritta nel file (a casa correggerò il relativo post).
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  28. #28

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    Comunque, ho condotto una analisi su 20000 stringhe generate ...:
    Ovviamente bisogna modificare il limite del ciclo for portandolo a valori più elevati, ma già con 1.000 l'errore nella formula di cromagno si presenta.

    P.S.: correggete la formula in I2 in:
    =SE(CONTA.SE(SCARTO(Foglio1!_FiltroDatabase;1;) I:I;"errore");"ERRORE";"OK")

    e in N2 in:
    =SE(CONTA.SE(SCARTO(Foglio1!_FiltroDatabase;1;) N:N;"errore");"ERRORE";"OK")

    File già aggiornato.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  29. #29

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4025
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923
    Ciao a tutti,
    @ scossa
    ho provato il tuo file (Lettera_Diversa.xlsb) e in effetti ogni tanto segnala errore nella mia formula, ma gli errori, tipo questo:

    NNNNNNNAN 8 A N
    NNNNNNNAN 8 A N errore
    NNNNNNANN 7 A N
    scaturiscono dal fatto che la sequenza precedente (o successiva) è uguale?
    Se è questo l'errore allori si, essendo il numero casuale dipendente dall'orario in cui viene generato, ma facendo le prove anche ad un secondo di distanza questo non dovrebbe verificarsi.
    Per il fatto che qualche volta dia caratteri esterni ad A e Z, non ho verificato ma mi fido anche perchè era una possibilità che pensavo potesse accadere non avendo adeguatamente controllato il valore ultimo con cui viene generato il casuale.

    Ora mi vado a guardare la tua formula per trovare la posizione perchè ad una prima occhiata non l'ho capita :93:

    Ciao

  30. #30

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0
    in effetti ogni tanto segnala errore nella mia formula
    intanto mi scuso perché ho dimenticato di ripulire la colonna Errore prima di ogni ciclo.

    Puoi farlo manualmente o apportare le seguenti correzioni al codice:
    Asc(.Cells(j, 8).Value) < 65 Or Asc(.Cells(j, 8).Value) > 90 Then .Cells(j, 9).Value = "errore" Else .Cells(j, 9).ClearContents

    e
    Asc(.Cells(j, 8).Value) < 65 Or Asc(.Cells(j, 8).Value) > 90 Then .Cells(j, 9).Value = "errore" Else .Cells(j, 9).ClearContents

    Detto questo, in un ciclo di migliaia di generazioni, succede ogni tanto che generi stringhe con caratteri non validi:
    X5XXXXXXX o =====R===

    Una possibile soluzione è di complicare la formula usando Mediana():
    =RIMPIAZZA(RIPETI(CODICE.CARATT(MEDIANA(65;INT((ADESSO()*10^6-INT(ADESSO()*10^6))*25+65);90));9);(CASUALE()*9)+1;1;SE((ADESSO()*10^6-INT(ADESSO()*10^6))>0,5;CODICE.CARATT(MEDIANA(65;INT(((ADESSO()*10^6-INT(ADESSO()*10^6))-0,5)*25+65);90));CODICE.CARATT(MEDIANA(65;INT(((ADESSO()*10^6-INT(ADESSO()*10^6))+0,5)*25+65);90))))

    Ovviamente sto spaccando il capello in 4, ma ho solo condiviso quanto fatto per soddisfare la semplice curiosità di vedere come si comportava il tuo codice con Adesso().
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

Discussioni Simili

  1. Passatempo da ombrellone
    Di scossa nel forum Domande su Excel in generale
    Risposte: 25
    Ultimo Messaggio: 04/09/15, 18:55
  2. Passatempo del virus della tastiera
    Di scossa nel forum Domande su Excel in generale
    Risposte: 26
    Ultimo Messaggio: 25/08/15, 20:06
  3. Passatempo da baita di montagna (a bassa quota).
    Di scossa nel forum Domande su Excel in generale
    Risposte: 14
    Ultimo Messaggio: 13/08/15, 06:57
  4. Passatempo da ombrellone 3 (candidati)
    Di ges nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 21/07/15, 02:02
  5. Passatempo da ombrellone 2
    Di ges nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 19/07/15, 23:06

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •