Matematica pura, fisica, logica (braingames.ru): giochi di cervello non legati al commercio - pagina 213

 

Un problema per i programmatori (il peso del problema è 4):

Un megacervello in un testo molto lungo deve sostituire tutte le lettere "A" con "B" e tutte le lettere "B" con "A". L'editor di testo permette di sostituire un insieme arbitrario di caratteri con un altro in tutto il testo. Per esempio, sostituendo "AA"->"BSAA" la stringa "AAAAAL" diventerà "BSAABSAAL". Come porta a termine il compito?

FAQ (dal sito web):

Вы не знаете алфавита текстового редактора. Единственное, что вы знаете, это то, что он содержит символы "А" и "Б".

(Spiegazione di Mathemat: nel primo campo (COSA sostituire) e nel secondo (COSA sostituire) si possono usare solo i caratteri A e B e nient'altro, nemmeno gli spazi: l'alfabeto del testo e dell'editor di testo ci è sconosciuto. Non mi è ancora chiaro perché questo chiarimento chiave manchi dal testo del problema stesso, ma ahimè, è così).

La condizione non lo dice esplicitamente, ma ne deduco che tutti gli altri caratteri tranne A e B devono rimanere invariati. È corretto?

Sì.

Cosa significa "testo molto lungo"?

1. Non puoi fare tutte le sostituzioni manualmente.
2. Qualsiasi sequenza di caratteri può essere presente in esso.
3. il megabrain non può usare sequenze di lunghezza paragonabile a quella del testo per la sostituzione.

Manca un carattere nel testo nell'"arsenale" dell'editor di testo?

No.

È possibile fare cambiamenti multipli in tutto il testo?

Sì.

Si possono saltare alcune sequenze? Per esempio, la sostituzione di "AA"->"BSAA" cambierà la stringa "AAAAAL" in "BSAAAL" (cioè la seconda sequenza è stata saltata).

No.

Le espressioni regolari (o le loro controparti) possono essere usate per la sostituzione?

No.

La soluzione del problema mi ha scioccato per la sua inaspettatezza (anche se altre soluzioni sono abbastanza possibili). Ho iniziato a risolverlo un paio di anni fa, dopo di che sono scomparso da Mind Games per un anno e mezzo. Un paio di giorni fa l'ho guardato di nuovo, e circa 24 ore fa ho inviato la soluzione a un moderatore. Non ho ancora ricevuto una risposta, ma sono sicuro al 100% che sia corretto. L'algoritmo è testato su un set di caratteri di prova, nessun errore trovato.

Задачи, загадки, логические игры [Игры разума] икф
  • www.braingames.ru
Мегамозгу в очень длинном тексте требуется заменить все буквы «А» на буквы «Б», а все буквы «Б» - на буквы «А». Текстовый редактор позволяет заменить во всём тексте один произвольный набор символов на другой. Например, в результате замены «АА»->«БСАА» строка «АААААЛ» перейдёт в строку «БСААБСАААЛ». Как ему выполнить задачу?
 
Mathemat:

Un problema per i programmatori (il peso del problema è 4):

Un megacervello in un testo molto lungo deve sostituire tutte le lettere "A" con "B" e tutte le lettere "B" con "A". L'editor di testo permette di sostituire un insieme arbitrario di caratteri con un altro in tutto il testo. Per esempio, sostituendo "AA"->"BSAA" la stringa "AAAAAL" diventerà "BSAABSAAL". Come può svolgere il compito?

FAQ (dal sito web):

La soluzione del problema mi ha scioccato per la sua inaspettatezza (anche se sono abbastanza aperto ad altre soluzioni). Ho iniziato a risolverlo un paio di anni fa, dopo di che sono scomparso dai Mind Games per un anno e mezzo. Un paio di giorni fa l'ho guardato di nuovo, e circa 24 ore fa ho inviato la soluzione a un moderatore. Non ho ancora ricevuto una risposta, ma sono sicuro al 100% che sia corretto. L'algoritmo è testato su un set di caratteri di prova, nessun errore trovato.

Non può A->A, B->B, AA->B, B->A?
 
Avals:
Non può A->A, B->B, AA->B, B->A?


Si può, ma non si può.

Per esempio, ecco il testo "AAAAAAAAAAAAAABBBBBBBBBBB", che risulta: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

 
Mathemat:

Un problema per i programmatori (il peso del problema è 4):

Un megacervello in un testo molto lungo deve sostituire tutte le lettere "A" con "B" e tutte le lettere "B" con "A". L'editor di testo permette di sostituire un insieme arbitrario di caratteri con un altro in tutto il testo. Per esempio, sostituendo "AA"->"BSAA" la stringa "AAAAAL" diventerà "BSAABSAAL". Come risolve il problema?

FAQ (dal sito web):

La soluzione del problema mi ha scioccato per la sua inaspettatezza (anche se sono abbastanza aperto ad altre soluzioni). Ho iniziato a risolverlo un paio di anni fa, dopo di che sono scomparso da Mind Games per un anno e mezzo. Un paio di giorni fa l'ho guardato di nuovo, e circa 24 ore fa ho inviato la soluzione a un moderatore. Non ho ancora ricevuto una risposta, ma sono sicuro al 100% che sia corretto. L'algoritmo è testato su un set di caratteri di prova, nessun errore trovato.

Si risolve in 4 sostituzioni:

A -> AA

B -> BAB

AA -> B

BAB -> A

 
Contender:

Risolto in 4 sostituzioni:

A -> AA

B -> BAB

AA -> B

BAB -> A

Non ho controllato, ma questa soluzione è data nei commenti per coloro che hanno risolto. Ecco la mia soluzione:

A -> AB
B -> AB
AB -> B
AB -> A

Nota: le prime due sostituzioni (più precisamente, le loro parti di destra) sono formalmente identiche.

Qualcuno può farlo in meno di 4 mosse?

-----------------------------------------------------------------------------

E a proposito, che dire di questo problema?

Задачи, загадки, логические игры [Игры разума] икф
  • www.braingames.ru
Перед вами на столе два тонкостенных непрозрачных сосуда кубической формы (без верхней грани) емкостью 4.096 и 8 литров. Как, имея неограниченный запас воды, быстро отмерить ровно 5 литров?
 
Mathemat:

Davanti a voi sul tavolo ci sono due recipienti opachi a forma di cubo a pareti sottili (senza bordo superiore) con capacità di 4,096 e 8 litri. Con una scorta d'acqua illimitata, come puoi misurare rapidamente esattamente 5 litri?

Il compito è qui. Il peso del problema è 5.

FAQ:

- le pareti sono molto sottili, il loro volume è trascurabile.

- 4,096 è quattro litri interi e novantasei millesimi, esattamente. 5 litri esatti sono esattamente 5, non, diciamo, 5,002 litri.

- L'opacità significa che non si può, per esempio, mettere un cubo più piccolo in uno più grande e versare acqua in quello più grande fino ai bordi di quello più piccolo. A causa dell'opacità, non può essere fatto con sufficiente precisione.

- veloce è davvero veloce, molto veloce. La decisione dei dieci passi non sarà presa. È troppo lungo.

È difficile, l'ho risolto in tre passi.

1) Mettere un cubo piccolo in un cubo grande, e riempire il cubo grande fino ai bordi. Ora inclinalo in modo che la superficie dell'acqua tocchi il bordo del piccolo cubo. (se avete accidentalmente versato troppa acqua - datene un po' di più, è molto).


Ora abbiamo versato esattamente un litro d'acqua. (La lunghezza del segmento AB=5 cm, è facile da calcolare dalle dimensioni dei lati dei cubi (20cm e 16cm rispettivamente).

Estrarre con cura il cubo piccolo, lasciando tutta l'acqua (7 litri) nel cubo grande.

Ora inclina il cubo grande fino a che l'acqua tocca il bordo "diagonale" (opposto al bordo attraverso il quale si versa l'acqua), e versa l'acqua nel cubo piccolo.

Il cubo grande conterrà esattamente la metà del suo volume (4 litri); quello piccolo conterrà 3 litri (= 7 litri - 4 litri).

Ora riempite il cubo grande fino all'orlo o un po' meno. Mettete con attenzione un cubo piccolo con tre litri d'acqua. Il suo volume è più di 3 litri, quindi non affonderà completamente, ma solo quanto basta per spostare 3 litri d'acqua dal cubo grande. Ora togliete il cubo piccolo. Il cubo grande ha esattamente cinque litri (8L - 3L), che erano necessari.

 
Mathemat:

Non ho controllato, ma una tale soluzione è data nei commenti per coloro che hanno deciso. Ecco la mia soluzione:

Nota: le prime due sostituzioni sono formalmente identiche.

Qualcuno può farlo in meno di 4 mosse?

In tre sostituzioni globali la soluzione è possibile solo se c'è un carattere aggiuntivo presente nell'alfabeto ammissibile, ma garantito assente nel testo, che per la condizione del problema non lo è.

Nelle condizioni date quattro mosse sono minime. Può essere (ma tediosamente e verbosamente) dimostrato. :)

 
MetaDriver:

È difficile, l'ho fatto in tre passi.

1) Mettere il cubo piccolo nel cubo grande e riempire il cubo grande fino al bordo. Ora inclinalo in modo che la superficie dell'acqua tocchi il bordo del piccolo cubo. (se avete accidentalmente versato troppa acqua - datene un po' di più, è molto).


Ora abbiamo versato esattamente un litro d'acqua. (La lunghezza del segmento AB=5 cm, è facile da calcolare dalle dimensioni dei lati dei cubi (20cm e 16cm rispettivamente).

Estrarre con cura il cubo piccolo, lasciando tutta l'acqua (7 litri) nel cubo grande.

Ora inclina il cubo grande fino a che l'acqua tocca il bordo "diagonale" (opposto al bordo attraverso il quale si versa l'acqua), e versa l'acqua nel cubo piccolo.

Il cubo grande conterrà esattamente la metà del suo volume (4 litri); quello piccolo conterrà 3 litri (= 7L-4L).

Ora versa il cubo grande fino all'orlo o un po' meno. Metti con attenzione il cubo piccolo con tre litri d'acqua. Il suo volume è più grande di 3 litri, quindi non affonderà completamente, ma solo quanto basta per spostare 3 litri d'acqua dal cubo grande. Ora togli il cubo piccolo. Il cubo grande ha esattamente cinque litri (8L - 3L), che era necessario.

quindi nella prima fase si versano 2 litri)

0.05*0.2*0.2=0.002 м3

 
sanyooooook:

quindi nella prima fase si versano 2 litri)

0.05*0.2*0.2=0.002 м3

stai mentendo di nuovo ;)

l'area del triangolo ABC = (0,05*0,2) / 2

totale: ((0.05*0.2) / 2) * 0.2 = 0.001 m^3

 
MetaDriver:

Un problema difficile, l'ho risolto in tre passi.

1) Mettere un cubo piccolo in uno grande e riempire il cubo grande fino ai bordi. Ora inclinalo in modo che la superficie dell'acqua tocchi il bordo del piccolo cubo. (se avete accidentalmente versato troppa acqua, riempitelo di nuovo, è molto).

Originale, ma sembra esserci una contraddizione nell'opacità. E tenere il grande cubo inclinato senza alcun supporto non è così facile, ci vogliono due persone.

Ora, incliniamo il cubo grande finché il bordo dell'acqua tocca il bordo "diagonale" (opposto al bordo attraverso il quale l'acqua si riversa), e versiamo l'acqua nel cubo piccolo.

E qui c'è una stronzata simile, specialmente con il versare l'acqua in quello piccolo. Versare l'acqua da quella grande a quella piccola attraverso il bordo di quella grande è difficile senza dispositivi speciali.

In breve, c'è una soluzione più breve e più semplice :)

MD: Per tre sostituzioni globali la soluzione è possibile solo se c'è un carattere addizionale che è presente nell'alfabeto accettato, ma garantito assente nel testo, che per i termini del problema non è il caso.

In queste condizioni quattro colpi sono minimi. Si può dimostrare (ma in modo noioso e verboso). :)

I moderatori sostengono che nessuno ai Mind Games ha ancora fornito una soluzione più breve di 4 mosse. (Non ho proposto il problema qui sotto, è solo un'automazione del motore del nostro sito).

Задачи, загадки, логические игры [Игры разума] икф
  • www.braingames.ru
У Мегамозга нашли страшную болезнь. Доктор выписал ему всего 4 таблетки двух видов (по две каждого вида), совершенно не отличимых друг от друга, и предупредил, что, если выпить более одной таблетки одного вида — смерть, не выпить таблеток — смерть, выпить за раз меньше нормы — смерть. Таблетки надо принять за два приема: утром — 2 таблетки (по...