Baralhar um baralho de cartas é difícil para as crianças, então elas precisam descobrir maneiras de obter um baralho bem baralhado razoável o mais simples possível.
Uma maneira de fazer isso que fornece resultados razoavelmente bons é:
- Retire o cartão superior e insira-o em um local aleatório no baralho
- Retire o cartão de baixo e insira-o em um local aleatório no baralho
- Continue até achar que é bom o suficiente.
Observe que você nunca deve inserir um cartão no topo ou no fundo, ele deve ser colocado em algum lugar do baralho.
Em vez de baralhar cartas, vamos embaralhar caracteres alfanuméricos: 0-9
, A-J
, a-j
, q-z
e Q-Z
.
Comece com a sequência mostrada abaixo e embaralhe os caracteres da maneira descrita acima. Você pode escolher se deseja continuar baralhando infinitamente ou embaralhar as cartas 100 rodadas (100 cartas da parte superior e 100 cartas da parte inferior).
0123456789abcdefghijqrstuvwxyzABCDEFGHIJQRSTUVWXYZ
O desafio é exibir os personagens sendo embaralhados. Cada "ordem aleatória" (retirar e inserir cartão) deve levar entre 0,25 e 0,35 segundos.
O gif abaixo mostra um exemplo de saída:
Isso é código-golfe, portanto o código mais curto em bytes vence.
"Por que você não tem a-t
, em vez de a-j
, q-z
?" Porque isso deve ilustrar naipes de cartas, não apenas personagens. E sim, existem 5 naipes.
Nota: Decidi parar de usar a marca de seleção em code-golf -challenges. Meta posts relevantes aqui e aqui .
0-9
,A-J
,a-j
,q-z
eQ-Z
, de acordo com a questão.Respostas:
JavaScript (ES6),
192188185bytesEditar: salvou 4 bytes graças a @ L.Serné. Economizou 3 bytes graças a @Arnauld.
fonte
e^=1
dentro dos parênteses vazios daMath.random
chamada. Você também pode alterar textContent para innerHTML, já que não está transmitindo caracteres especiais. Você também pode definire
0 natoLowerCase
chamada.e
. Você poderia apenas usars
. (Porque('some_string'^1) === 1
)MATL,
625856 bytes2 bytes salvos graças a @Luis
Esta versão será executada indefinidamente. Experimente a demonstração online no MATL Online , um intérprete experimental online que suporta saída dinâmica. Isso será executado por 30 segundos (um limite rígido imposto pela versão online) se não for eliminado primeiro.
Explicação
fonte
Perl, 117 bytes
Para executá-lo:
Explicações:
-
@F=(0..9,a..j,"q"..z,A..J,Q..Z)
cria o deck inicial e o armazena@F
.-
{...;redo}
executa...
para sempre.-
splice@F,++$|+rand(@F-2),0,++$v%2?shift@F:pop@F
alternativamente, remova o primeiro / último elemento do deck e insira-o em uma posição aleatória (enquanto aumenta$|
, para que as impressões não sejam armazenadas em buffer),-
print"\r",@F
imprime o deck,-
select$,,$,,$,,.3
dorme por 0,3 segundos (o Perlsleep
não consegue dormir por menos de 1 segundo),fonte
0..9
, não1..9
, e sua plataforma inicial está fora de ordem, bem :)Python 3,
199196192186 bytesEconomizou 4 bytes graças ao TuukkaX e 6 bytes graças ao FlipTack!
Usa a
print
função do Python 3 para suprimir nova linha, menor que a do Python 2sys.stdout.write
.Usa uma variável flip-flop para alternar entre mover as cartas superior e inferior.
Ungolfed:
fonte
import random,time
mais curto?C,
290285 bytesUngolfed:
fonte
Rápido, 288 bytes
Golfe em Swift é sempre um desafio, pois um de seus pontos de venda é a expressividade.
fonte
Rubi (
138119 bytes)Não é tão curto quanto @PaulPrestidge, mas pelo menos eu entendo .. Também é bom saber que ruby é como um túnel interminável de incríveis!
fonte
Rubi,
111101 caracteresLoops infinitamente.
fonte
Noodel , não competindo 41 bytes
Tente:)
Como funciona
fonte
bash, 170 bytes
aqui '^' (na primeira linha) representa
ctrl-m
: inserido na linha de comando comoctrl-v
enter
ou em um editor de acordo com o funcionamento do editor (assumindo que o editor funcione)fonte