Monday 10 July 2017

De bruijn sequence binary options


De Bruijn Sequences No ano passado escrevi um artigo sobre códigos PIN de 4 dígitos. Tornou-se bastante popular, e eu ainda tenho perguntou para dar um TED X falar sobre isso que você pode assistir aqui (shameless plug). A base da conversa foi que as pessoas são muito previsíveis na seleção de seus códigos. Matematicamente, enquanto há 10.000 maneiras que os dígitos 0-9 podem ser organizados em um PIN de quatro dígitos, seleções de povos não são aleatórias. Somente 426 códigos distintos são necessários para adivinhar mais de metade dos PINs em uso Perfect World Imagine, em vez de ser previsível, que as pessoas selecionaram seus códigos inteiramente ao acaso. Se você quiser adivinhar o PIN de um bloqueio de combinação de quatro dígitos, você pode ter que percorrer todas as 10.000 combinações de quatro dígitos. Uma vez que existem quatro dígitos em cada número, o pior caso é que você tem que digitar 40.000 pressionamentos de teclas, e, em média, levaria metade deste número. Isso é um monte de pressionamentos de teclas. Você pode fazer melhor Você pode fazer isso com menos pressionamentos de teclas Bem, se o bloqueio é inteligente, não, você não pode fazer melhor. Mas alguns sistemas que aceitam PINs são menos sofisticados. Esses mecanismos menos seguros não quantizam as entradas em lotes de quatro (ou por muito tempo que o código seja), mas em vez disso basta olhar apenas as últimas quatro teclas pressionadas. Um exemplo disto em uso é mostrado abaixo. Imagine que você inseriu os seis dígitos 123479 em um desses sistemas. Como o sistema examina apenas os últimos quatro dígitos inseridos, esta seqüência de caracteres lhe daria três diferentes (sobreposição) tentativas de desbloqueio. Este sistema mais simples tem a vantagem de não ter que se preocupar com o estado em que se encontra quando se inicia, ou ter que codificar em tempo limite no sistema de entrada. Sem essa simplificação, se seu código fosse 1234. Mas pouco antes de você tentar entrar nela, sem o conhecimento de você, alguém tinha entrado 99 no teclado. Quando você inseriu seu PIN, o bloqueio iria interpretar isso como 9912 (falhar). E então 34 (ainda uma falha e esperando por mais dígitos antes de dizer-lhe que falhou). Examinar apenas os últimos quatro dígitos resolve esse problema. Se o nosso sistema suporta números sobrepostos, podemos ser mais eficientes na adivinhação. Podemos criar um fluxo de entrada que passe por todas as permutações, mas requer menos pressionamentos de teclas. A questão é: quanto mais eficiente. Qual é a menor seqüência de números que podemos atravessar para garantir que todas as combinações possíveis dos dígitos são vistos É possível criar uma seqüência que não repita qualquer sub-seqüência de códigos Nicolaas Govert de Bruijn A matemática, teoria dos números, combinatronics e lógica destes tipos de problemas foram estudadas extensivamente por um professor holandês chamado Nicolaas Govert de Bruijn (9 de julho de 1918 17 de fevereiro de 2012). Seqüências desses números são nomeados após ele como Sequências De Bruijn. A resposta rápida é que, sim, é possível fazer uma seqüência não-repetitiva de números que abrange sempre sub-seqüência internamente, apenas uma vez. No entanto, antes de olhar para a solução de número PIN, vamos olhar para algumas versões mais simples do problema hellip Crédito de imagem: Konrad Jacobs Simpler Sequências De Bruijn seqüências podem ser descritas por dois parâmetros: k o número de entidades no alfabeto, p. Para k10 n a ordem (comprimento da sub-sequência necessária) p. N 4 para um PIN longo de quatro dígitos. Estes são tipicamente descritos pela representação B (k, n). Para o nosso exemplo PIN, a notação seria B (10,4) B (2,2) Vamos começar com um exemplo muito simples: B (2,2) Bem, use o dicionário para os possíveis valores. Queremos gerar uma string que contenha substrings cada combinação possível de dois dígitos. Aqui está uma solução: Os dois primeiros dígitos nos dão 00. Os próximos dois 01. Depois 11. Para chegar a 10. Precisamos envolver ao redor tomando o último dígito da seqüência eo primeiro dígito. (Se isso não é apropriado para fazer, como o exemplo de pressionamento de teclas, então podemos simplesmente anexar o primeiro caractere da seqüência até o final para fazer 00110). NOTA: Pode haver várias soluções De Bruijn para qualquer problema. Você pode facilmente ver isso usando mesmo rotações simples da seqüência de caracteres. Uma vez que cada par de dígitos adjacentes nesta cadeia é único, não importa qual seja a posição de partida. À medida que k e n aumentam, o número de soluções possíveis cresce rapidamente. A equação olhando peludo à esquerda mostra o número de soluções distintas. B (2,3) Heres uma solução para B (2,3): A partir da frente, temos 000. 001. 010. 101. 011. 111. Em seguida, olhando para embrulhar, temos 110 e finalmente 100. Todas as oito combinações possíveis estão presentes nesta seqüência. B (2,4) Heres uma solução para B (2,4): Você pode ver que temos 0000. 0001. 0010. 0100. E aqui está como uma fita bonita. Podemos agora sugerir alguns dos potentes usos potenciais dessas seqüências. Imagine esta seqüência De Bruijn é escrito em uma fita em loop, que passa passado uma cabeça de leitor. Cada incremento da fita uma posição ao longo dá uma saída única. Encontramos um eficiente mecanismo de codificação posição como há um código distinto para qualquer conjunto contíguo de quatro dígitos (neste caso, como n 4). Como legal é que Esta seqüência também percorre todas as permutações de combinações de 0000-1111. Se você é um engenheiro de software ou testador, tenho certeza que isso está dando idéias interessantes para como você pode implementar isso como casos de teste para percorrer todas as entradas binárias para suas funções. Cada deslocamento de um bit dá uma única palavra binária (de comprimento do tamanho de substring n), que não repete, passa por cada número possível, e retorna ao início novamente. B (2,6) Ignorando um par, aqui está uma solução para B (2,6): B (6,2) Claro, também podemos mudar o tamanho do dicionário. Neste exemplo, em vez de simples k 2 binário, Ive aumentou para k 6 para usar valores possíveis. Aqui está a saída para B (6,2): Lendo isto da esquerda para a direita podemos ver que temos: 00. 01. 10. 02. 20 hellip 41. 15 hellip 33. 34 hellip 55. 50 B (5,3) Um último exemplo, heres uma seqüência para B (5,3): Voltar para PIN Retornando ao nosso PIN quebra, o B (10,4) tem 10.000 dígitos de comprimento, e contém cada única substring para cada Combinação de dígitos. Como temos que digitar essa seqüência, o conceito de Wrap-Around não tem sentido, então ao invés de wrap-around, simplesmente adicionamos os três primeiros números novamente ao final do forte. Assim, o número máximo de eventos de pressionamento de tecla é 10.003. Muito menos do que os 40.000 que seriam necessários se digitá-los completamente Por nenhuma razão útil em tudo, aqui estão todos os 10.003 dígitos desta seqüência: Como essas coisas funcionam Eu glosado sobre como calcular uma seqüência De Bruijn mais cedo. Vou compensar isso agora explicando os princípios de como essas coisas funcionam. O conceito não é complicado, apenas coisas tediosas que os computadores podem fazer facilmente. Vamos olhar para este problema usando Dirigido Gráficos. Para este exemplo, eu vou usar B (2,3). Esta seqüência é simples o suficiente para obter o conceito sem ser muito complexo e ocupado. Cada sub-string na seqüência pode ser descrita como um nó em um gráfico direcionado. A partir de cada nó, é possível adicionar um 0 ou um 1 para fazer o próximo número na seqüência. Da mesma forma, cada estado / nó no gráfico poderia ter sido formado a partir da adição de um dígito de um dos dois estados anteriores. Primeiro, anotar todos os nós que são possíveis usando o nosso dicionário de dados. Neste caso, estes são 000 - 1111. Em seguida, conectamos os nós com linhas mostrando quais possíveis próximos estados são realizáveis ​​a partir de cada local. Cada nó tem duas ligações de saída correspondentes à adição de um 1 ou 0 desse estado. Essas bordas são direcionadas. Eles têm uma direção (descrita pelas setas) Nota - Para os Estados 000 e 111. A adição de um 0 ou 1. Respectivamente, leva você de volta para o mesmo nó. Para garantir que cada substring esteja presente na solução, precisamos certificar-se de que cada nó seja passado uma vez (e somente uma vez). Precisamos rastrear um caminho através do gráfico (seguindo as setas) para conectar os nós. Um caminho que atravessa um gráfico e visita cada nó exatamente uma vez é chamado de um caminho hamiltoniano. Um tal caminho hamiltoniano no gráfico B (2,3) é mostrado em vermelho à esquerda. Isso destaca porque existem muitas soluções diferentes (não apenas rotações). Há mais de uma maneira de percorrer este gráfico. A maneira de criar uma seqüência de De Bruijn é encontrar um caminho Hamiltoniano através de um gráfico de seus nós. À medida que os valores de k e n aumentam, aumenta a complexidade do gráfico, mas o princípio é o mesmo. Heres um pouco mais complexa usando um dicionário B (3,2) Encontre um caminho através do gráfico o passa por cada nó apenas uma vez, e você tem a sua solução. Outros usos Já sugerimos que as seqüências de De Bruijn podem ser usadas para codificar / decodificar posições e que podem ser usadas por programadores de computador experientes. Quais são algumas outras aplicações Ive visto magos usar um princípio semelhante em vários truques de cartão. Ao pré-organizar (carregar) um baralho com uma sequência conhecida de cartões vermelhos e pretos em uma sequência de De Bruijn, ele permite que ele / ela saiba qual é a posição e, assim, qual será a próxima carta. Usando uma codificação binária dos cartões vermelhos / pretos para gerar um número único, que pode, então, ser usado para codificar o valor do que o próximo cartão será. Devido à natureza envolvente das sequências de De Bruijn, um deck carregado pode ser cortado tantas vezes como desejado sem perturbar ou perturbar a codificação. Eu não quero ligar diretamente exemplos, como eu não quero arruinar os truques para outros que possam estar realizando-los, mas Im certeza se você sabe como usar uma ferramenta de pesquisa na web, você pode encontrar algumas estratégias. DNA O conceito de ciclos de Hamilton e De Bruijn são usados ​​extensivamente em modernas técnicas de sequenciamento de DNA. Uma grande cadeia de DNA pode ser dividida em pedaços menores (as peças menores são mais fáceis de processar e seqüenciar). Em seguida, os resultados dessas peças menores podem ser colados de volta juntos como algum tipo de quebra-cabeça gigante, porque as sub-peças individuais contêm sobreposições com outras seqüências parciais. Esta técnica é chamada Shotgun Sequencing. Abaixo você pode ver uma representação de uma longa cadeia de DNA. Este é esmagado em pequenos sub-peças (de diferentes tamanhos), que são mais fáceis de classificar. As peças classificadas podem então ser unidas de volta para formar a sequência completa olhando as sobreposições entre os substratos. Em alguns casos, a técnica de seqüenciamento de espingarda gera múltiplas seqüências canônicas. É claro que apenas uma delas pode ser a seqüência real. Há uma variedade de testes que podem diminuir qual destas seqüências é a original. O seqüenciamento de espingardas, embora não defina necessariamente a seqüência exata, acelera muito o processo reduzindo o número de possíveis candidatos. O advento das técnicas de seqüenciamento de espingarda avançou o mapeamento inicial do genoma humano por anos, e forneceu biólogos, geneticistas e médicos com uma nova ferramenta poderosa. A capacidade de seqüenciar dados genéticos rapidamente tem benefícios potenciais não só para profissionais de ciências da vida e da saúde, mas também para o público em geral. É muito legal. Xadrez Programas de computador que jogam xadrez fazem uso de seqüências De Bruijn. Um tabuleiro de xadrez é convenientemente 8 x 8 quadrados, e estes podem ser representados pelos números 0-63, que é um ajuste agradável para uma seqüência longa de De Bruijn de seis bocados. De Bruijn Toroids OK, prepare sua mente para algo ainda mais frio. Podemos expandir uma seqüência dimensional de De Bruijn em duas dimensões. Nós chamamos esses Toróides porque cada linha e coluna se envolve em si mesma. Deslizar uma janela sobre esta superfície cria uma matriz única para uma matriz de De Bruin bem formada. As coisas ficam muito mais complicadas porque não só precisamos especificar o número de itens no dicionário, mas também as duas dimensões da janela. Abaixo está um exemplo simples de uma matriz que tem um dicionário de dois e uma janela (2 x 2): Se você olhar com cuidado, você verá que cada combinação de pontos vermelhos / amarelos aparece todas as combinações possíveis de (2x2) sub - Matrizes. Lembre-se, você precisa envolver-se (por exemplo, para obter uma matriz contendo quatro pontos amarelos você precisa da matriz que é os quatro cantos enrolados em torno do exterior) Im certeza de que você pode ver aplicações instantâneas para algo como este na determinação (x, y ). Cada janela é única e determina a posição da coordenada. Claro, não foram restritas a usar apenas um dicionário de dois itens. Abaixo estão dois maiores Toroids De Bruijn. O da esquerda tem um tamanho de dicionário de três, e janela de matriz de (2 x 2). O da direita tem a mesma janela de matriz e desta vez tem um dicionário de tamanho quatro. A grelha à esquerda é (9 x 9) e à direita é (16 x 16), permitindo a representação de todas as 256 combinações possíveis que um dicionário de ordem quatro em uma matriz (2 x 2). De Torneiras Bruijn também não tem que ser quadrado, por exemplo, há uma solução a solução de quatro dicionário que se encaixa em uma matriz (8 x 32) em vez de (16 x 16). É claro que existem várias traduções equivalentes destas soluções, uma vez que qualquer combinação de deslocamento de linha ou coluna é uma solução válida. Seu também possível tesselate estas telhas borda perfeitamente para fazer um mapa as repetições com a freqüência mesma ordem. Papel Digital Anoto. Uma empresa sueca, inventou, e tem numerosas patentes, sobre o uso de canetas digitais e papel. O conceito Anoto é baseado em um padrão distinto de pontos que podem ser impressos em papel. Usando uma caneta especial, que contém uma pequena câmera, o padrão de ponto pode ser lido, ea posição exata no papel determinado. Embora não exatamente o mesmo conceito, o sistema Anoto funciona por pequenas mudanças no deslocamento na posição de pontos de uma posição média nominal. Você pode encontrar uma lista completa de todos os artigos aqui. Clique aqui para receber e-mails de novos artigos. Copy 2009-2013 DataGenetics Política de Privacidade Estou tentando calcular seqüências de Bruijn para alfabetos que têm um número de caracteres que não é um poder de dois. Para alfabetos com caracteres de 2k, o cálculo das sequências de Bruijn é fácil: Existem várias regras simples, como Prefer Ones e Prefer Opposites que trabalham para gerar B (2, n). B (2k, n) é exatamente o mesmo que B (2, kn), se você ler os 1s e 0s como códigos binários para os caracteres reais em seu alfabeto. Por exemplo. Você pode interpretar B (2,8n) como sendo sobre n-comprimento seqüências de bytes. Prefere-os é bastante simples: Escreva n zeros. Em seguida, sempre escreva um a menos que ele faria com que a repetição de uma seqüência de comprimento n, caso contrário, escrever um zero. Atualmente, eu não vejo como generalizar essas regras para não-poder-de-dois-tamanho alfabetos. Existe um método geral para calcular as seqüências de Bruijn através de gráficos: Seja cada n-sequência de comprimento gerada pelo seu alfabeto um nó ponha uma aresta de A para B iff os caracteres n-1 mais à direita de A são os mesmos que os n - Caracteres de B. Escreva cada extremidade com o último caractere da seqüência no vértice da cabeça. Qualquer caminho Euleriano através deste gráfico gerará uma sequência de Bruijn, ea construção peculiar que usamos garante que haverá pelo menos um desses caminhos. Podemos usar o Algoritmo de Fleurys para (não deterministicamente) construir um caminho Euleriano: Escolha um vértice. Deixe esse vértice através de alguma borda e exclua essa aresta, apenas escolhendo bordas cuja exclusão desconecte o vértice do gráfico se não houver alternativa. Acrescente a sua seqüência de caracteres a etiqueta da borda que você acabou de excluir. Ir para 2 até que todas as arestas tenham desaparecido. A sequência resultante será uma sequência de Bruijn. Este algoritmo é um pouco mais complexo de implementar do que Preferes. A simplicidade do Prefer Ones é que basta consultar a saída já gerada para determinar o que fazer. Existe uma maneira simples de generalizar os Preferes (ou, possivelmente, Prefer Opposites) para alfabetos de tamanhos não-poderosos-de-dois pediu Oct 24 10 at 14: 13Fibonacci e Opções Binárias Um dos métodos mais populares de predizer movimento de ativos é através de Uma seqüência de números conhecida como retração Fibonacci. Muitos comerciantes de Forex usam este método para ajudá-los a descobrir quando entrar e sair de uma posição dentro de um par de moedas, mas ele realmente pode ser usado com qualquer tipo de ativo. Com um bom pacote de gráficos você será capaz de calcular esses níveis de preços automaticamente, mas ter uma boa compreensão do que eles significam e como esses números podem afetar sua negociação ainda é necessário para ser bem sucedido com este método de negociação. O que é Um retracement Fibonacci é um método de análise técnica que às vezes é usado como uma ferramenta de negociação de curto prazo que pode ajudar os comerciantes prever futuros movimentos de preços. Os retracements de Fibonacci baseiam-se na seqüência de Fibonacci de números onde cada número novo é baseado na soma dos últimos dois números. Uma seqüência comum seria assim, 1, 1, 2, 3, 5, 8, 13 e assim por diante. Os níveis mais comumente utilizados quando se trata de negociação a curto prazo são 23,6, 38,2 e 61,8. 50,0 é também por vezes adicionado à equação para dar um ponto de referência estável. Como funciona é bastante simples. Esses números geralmente agem como níveis de suporte e resistência dentro do gráfico de preços de um determinado ativo. Por que ele funciona não é totalmente claro que poderia até ser uma espécie de profecia auto-realizável que os comerciantes fazem acontecer simplesmente porque eles esperam que isso aconteça. Ainda assim, isso acontece com freqüência suficiente que se tornou uma maneira viável para ajudar um comerciante a ganhar dinheiro. Quando uma moeda é dirigida em uma certa direção, ele muitas vezes vai encontrar resistência na marca de 23,6 por cento. Então, se um par está indo para baixo no preço, quando ele atinge 23,6, a queda vai nivelar ou talvez até mesmo reverter ligeiramente. Esta resistência à mudança é geralmente de curta duração. E o preço continuará dentro de sua tendência predominante em breve. O mesmo acontecerá com freqüência em torno de 38,2 e 61,8 por cento. Como usar Fibonacci Quando você está usando Fibonacci retracement dentro de sua negociação, como você usá-lo depende de seu calendário, especialmente se você está negociando opções binárias. A regra comum é que você não deve trocar contra a tendência dominante. E os números de Fibonacci não vão contra essa sabedoria. Mesmo se você estiver negociando 60 opções binárias segundo, você não quer ir contra a tendência, mesmo se você estiver em um nível de preço chave. Não há maneira de prever quanto tempo essa resistência vai durar. A melhor maneira de lidar com a situação é pausar sua negociação no ativo em questão até que o período de retração tenha passado. Então, se você está negociando 60 opções de segunda chamada no par USD / CAD, eo preço atinge o nível de 38,2 por cento, a melhor maneira de lidar com isso é simplesmente parar e esperar. Uma vez que o período de retracement passa, você pode retomar sua negociação. Portanto, a melhor maneira de usar isso é como um sistema de alerta. Os preços vão pausar em um certo nível mais frequentemente do que não porque os comerciantes esperam que eles. Na realidade, os números de Fibonacci não funcionam em nível mecânico, mas sim psicológico. Ainda assim, isso acontece regularmente. E você precisa estar ciente de que vai acontecer se você quiser ser bem sucedido. Durante os pontos de resistência, os preços não irão seguir a tendência, mas pode ir ligeiramente para cima ou para baixo enquanto preso aqui. Mesmo com 60 opções de segundo, os movimentos ligeiros não vão ser rentável para você com freqüência suficiente para ser worth. Korea Stock Exchange História De acordo com o KRX, seu valor de mercado agregado foi de 1.207,4 trillion won (977,7 bilhões) a partir de Jan. Comparado com A capitalização de 15 bilhões de wons em 1965, o que representa uma expansão de 82.895 vezes. O número de empresas listadas saltou 45 vezes nos últimos 50 anos, de 17 para 769. Korea Stock Exchange História xtb online trading wikipedia free A Korea Stock Exchange Composto KOSPI é um importante índice de mercado de ações. Página fornece - Coréia do Sul Stock Market KOSPI - valores reais, dados históricos. A troca de Coreia KRX, que começou como o estoque de Coreia. Fundou a KRX em 2009 através da integração de mercados de acções, obrigações e futuros. Depois de muitas reviravoltas, o mercado acionário doméstico cresceu para ser o 13º maior do mundo em valor de mercado agregado. O número de empresas cotadas e o valor médio do volume de negócios das ações também se expandiram para além da comparação com os primeiros dias. Mas no final da década de 1990, sofreu grandes danos como a Coréia experimentou uma crise de moeda severa. Em 2008, teve outro momento difícil, varrido pela crise financeira global. A Bolsa de Valores da Coreia do Sul, anteriormente uma bolsa sul-coreana independente, foi fundada em 1956. Alguns de seus marcos incluem a. Dias atrás. Descubra os preços históricos do estoque KS11 no Yahoo Finance. Visualizar o formato diário, semanal ou mensal até quando o estoque de índice composto KOSPI foi emitido. Tech Market Data. Ações mais Ativos. A Korea Stock Exchange Composite KOSPI é um importante índice de mercado de ações. Página fornece - Coréia do Sul Stock Market KOSPI - valores reais, dados históricos. O valor médio diário de negociação também disparou para 4,77 trilhões de won, 150.000 vezes maior do que os 31 milhões de wons em 1965. European Options Broker Stock Market Ações baratas Opções Binárias Anyoptions Depósito mínimo de depósito InvestorPlace fornece milhões de investidores com artigos perspicazes, Notícias do mercado de ações. Ações e ações são palavras intercambiáveis ​​nas ações ou mercado de ações mundo que muitas vezes significam a mesma coisa. Ações baratas Nós analisamos como comprar ações negociadas em nosso guia de negociação on-line. Aprenda a reduzir caras despesas de negociação com Money Saving Especialista Ramsbay fornece Nepal Stock Exchange empresas listadas relatórios de mercado de ações como Nepal Mercado de Ações, Nepal Stock Exchange, Stock Investment, Nepal. Como Nepal Rastra Bank anunciou a nova política monetária, Nepse ganhou 29,08. De uma diferença para os investidores que investem no Nepal Stock Exchange Nepse. Como investir na Nepal Stock Exchange NEPAL O que Nepal Stock Exchange NEPSE e. Por que os investidores estrangeiros tímido longe de investir em empresas nepalesas é por causa de sua. Comportamento do investimento de investidores individuais no mercado de ações do Nepal Uma pesquisa Bharat Singh Thapa Resumo Este estudo tenta entender o investimento. Menu de Recursos de Aprendizagem A nossa revisão imparcial do Grupo de Capital de Londres fornecerá os fatos completos, incluindo informações sobre regulamentação, tipos de contas, alavancagem, spreads e muito mais. Eu uso Forex Hacked com as configurações padrão com a configuração Trendrigger definido como verdadeiro e masshedge definido como verdadeiro com o fator 0.1 a partir da 6a posição aberta. Hot Forex é um corretor forex offshore, com sede na Maurícia. Ele oferece MT4, e vários bônus, bem como 6 tipos de conta. Lead revisão completa Anunciantes para Forex Online Stock Trading no Uk Adams Provavelmente custou a emissora, 000, 000 para a. Sobre os anunciantes dizendo, eu acho que eles conseguiram ou eu não acho que eles conseguiram .. Anunciantes esperados tem uma média muito maior do que o mercado, mas apenas. Segurando muitos estoques o portfólio de anunciantes esperados always. The Aperiódica Youre leitura: cps mathem-o-blog. Vídeos David8217s de Bruijn sequência cartão truque Há poucos dias, meu amigo David me perguntou se eu poderia ajudá-lo com um truque de cartão. Eu disse que eu poderia, daqui este borne. Eu consegui pino David para baixo na frente da minha câmera tempo suficiente para ele demonstrar o truque uma explicação completa segue este vídeo: O truque básico é bastante conhecido: Card Colm escreveu sobre isso para sua coluna MAA há alguns anos, e Coletou uma lista bastante extensa de pessoas que escreveram sobre o assunto. David encontrou-o através de Persi Diaconis e livro de Ron Graham8217s Magical Mathematics. Mas hadn8217t ler o livro em detalhes antes de tentarmos trabalhar o truque para nós mesmos. Uma seqüência de Bruijn de comprimento k em um alfabeto A é uma seqüência cíclica que contém todas as seqüências possíveis de comprimento k exatamente uma vez. Segue-se que se você recebe uma seqüência de k letras, você pode dizer exatamente onde ela ocorre na seqüência. Uma vez que não importa o que os símbolos no alfabeto A são tão longos quanto eles são todos diferentes, podemos apenas referir-se a uma sequência de Bruijn (k, n), contendo todas as subseqüências de comprimento k usando os números. Decidimos que íamos atribuir a cada carta num deck padrão uma cadeia binária de 6 dígitos (porque 26 64 gt 52) ​​e organizá-los na ordem de uma sequência (6,2) de Bruijn. Então, se pedimos a alguém para cortar o baralho, desenhar seis cartas e dizer-nos as suas cores, que poderia trabalhar exatamente quais as cartas que tinham na mão. Pode haver mais de uma seqüência de Bruijn para cada escolha de k e n, para que possamos escolher a que foi mais fácil de construir. Para seqüências binárias, esta regra sempre gera uma seqüência de Bruijn de comprimento k: escreva k-1 zeros seguido por 1, então as letras subseqüentes são dadas por x: xix pmod 2 8212 adicione dois números adjacentes para obter o um seis lugares ao longo. Como a adição modulo 2 é a mesma coisa que a subtração módulo 2, o mesmo truque funciona para trás: xi x x. Portanto, a única coisa que restava a fazer era atribuir cadeias binárias a cartões. Eu decidi que quatro dígitos para o valor de face e dois para terno faria, uma vez que permite dividir o cálculo em dois pequenos passos. Assim, os valores faciais vão de 0 A, a 12 K, e os ternos vão Diamantes, Clubes, Corações, Pás. Em uma mão de seis cartas tiradas do baralho, a sequência de cores vermelha ou preta dá o valor do último cartão desenhado. O único problema é que há doze cordas que representam valores de face maiores que 12, e eu acho que é possível construir uma seqüência de Bruijn onde todos eles ocorrem em um bloco. Mas igualmente, porque há 64 seqüências binárias de seis dígitos, qualquer seqüência que usamos teria doze cordas não utilizadas no final. Então tivemos que fazer um kludge e manualmente trocar 8220bad8221 strings na parte utilizável da seqüência com 8220good8221 uns no final. Agora, decodificar seqüências binárias é um trabalho bastante tedioso, e encontrar essas seqüências inutilizáveis ​​é especialmente assim, então eu rapidamente escrevi um script Python para fazer os cálculos para mim. Aqui está: E aqui é a sua saída: O script Python constrói a seqüência de Bruijn, decodifica-a em uma seqüência de 64 cartas (algumas delas virtuais), encontra cartas ruins no baralho de 52 e troca-as com boas cartas na pilha De doze 8220castoffs8221 no final, certificando-se a cor é preservada. Acontece que existem oito cartas ruins no deck que precisam ser trocadas. Então, só precisamos lembrar oito pares de strings binários e uma regra iterativa simples que constrói a seqüência para executar o truque. Não é ruim para um trabalho de tarde Matemático, fã de koala, editor Aperiódico. Normalmente encontrado remar no Mar do Norte, ou mexer com computadores. 14 Responses to 8220David8217s de Bruijn seqüência cartão trick8221 Christian e David Eu estremecer para pensar o que 8220koala fan8221 poderia significar. No entanto, I8217m escrevendo para agradecer a ambos para esta página da web e seus recursos. I8217m um mágico executando, e este é um método brilhante para executar o que poderia ser um efeito surpreendente. Algo semelhante é descrito em Alex Stone 8217s 8220Fooling Houdini8221, mas os detalhes exatos são deixados de fora e de sua descrição eu duvido 8282s tão limpa como o script you8217ve juntos aqui. . No entanto, duvido que muitos magos sejam capazes de seguir a teoria (a menos que tenham aprendido aritmética binária e teoria da seqüência em uma de suas muitas férias em seu prazer). Além de ser um nerd mágico, um ex-cientista, e estou em TI, então eu consegui agarrar a maior parte dele com um pouco de esforço. Mas para mim isso é uma vantagem, como eu não posso imaginar qualquer um dos meus irmãos nerds mágicos querendo executá-lo. Qualquer maneira. Posso apontar que, no desempenho (se você está preocupado com isso) você não precisa pedir a cor de cada cartão Apenas o padrão de uma cor faria. Além disso, se você pudesse discernir a extensão da cor das seis cartas sem fazer perguntas (marcas invisíveis nas costas, por exemplo), isso seria um milagre. Trabalhando na última idéia. E isso é tudo. Obrigado novamente pelo trabalho, engenhosidade, habilidades mentais e habilidade por trás de colocar isso juntos. Um cartão de 52 De Bruijn bate todas as outras idéias vistas para a limpeza, incluindo Colm8217s. Obrigado pelo código. Eu modifiquei um pouco para melhor atender às minhas necessidades, e porque eu acho que você pode pegar mais alguns atalhos. 1. I8217ve trocou a ordem de acordo com o valor nominal. 2. Um valor de face de 1 é o Ás, 2 o 2, e assim por diante. 3. I8217ve incluído 2 x Jokers (contado como preto). 4. I8217ve girado a seqüência ligeiramente. Isso me dá uma encomenda para o baralho de 52 cartas, das quais 6 estão nos castoffs. Mas as regras de substituição (apenas 4, e feito à mão) são mais fáceis (também porque eu preciso dos Jokers no baralho). 1. Impossível Clubes são valor facial 8211 13. 2. Pás Impossível são Jokers. 3. O 821714 de Diamonds8217 é o 8 de Diamantes. 4. O 821715 de Diamonds8217 é a Rainha dos Diamantes. Nomes de cartas faces Ace, 2,3,4,5,6,7,8,9,10, Jack, Rainha, Rei Nfaces faces. len () Suit Clubes, Espadas, Diamantes, Corações geram de bruijn seqüência def debruijn ( ): Sequência 0,0,0,0,0,1 para i no intervalo (6,64): sequence. append ((sequencei-6sequencei-5) 2) seqüência de retorno obter uma seqüência de dígitos binários representando um inteiro def binarise (N, comprimento): return bin (n) 2:.zfill (comprimento) def debinarise (dígitos): binário. join (str (x) para x em dígitos) return int (binário, 2) decodificar um binário de seis dígitos Seq: número debinarise (seq2 :) terno debinarise (seq: 2) terno de retorno, número transformar um cartão em uma seqüência binária de seis dígitos def codececard (cartão): terno, retorno de cartão de número. (Str (x) para x em binarise (terno, 2) binarise (número, 4)) exibir uma codificação de cartões binários e seu nome def showcard (cartão): terno, número de cartão se (suit1 e (número 0 ou número gt 13 ): Nome desconhecido de espadas Joker elif (suit0 e número gt 13): nome s de s (facesnumber-14, suitssuit) elif (suit2 e número 14): nome s de s (faces7, suits3) elif (suit2 e número 15 ): Nome s de s (faces11, suits3) else: nome s de s (facesnumber-1, suit) retorno s: s (codececard (cartão), nome) (Card)) def rotate (l, n): return ln: l: n rotação de sequência (debruijn (), 2) sequência2 cartões decodesequence (sequencei: i6) para i no intervalo (0,64) As primeiras 52 cartas de convés: 54 Obtém as cartas não utilizadas da extremidade do deck de 64 que têm valores utilizáveis ​​castoffs (x, y) para (x, y) em cards54: se yNfaces1 ou y 0 print Cards: for i in range (Cartões) cartões de visita nCastoffs: showcards (castoffs) impressão nTo recordam: impressão 1. Impossible Os clubes são valor de face - 13. impressão 2. Impossible Spades are Jokers. Imprimir 3. O 14 de Diamantes é o 8 de Diamantes. Print 4. O 15 de Diamonds é a Rainha dos Diamantes. Showcards (toswap) Cartões: 000100: 4 de Clubes 001000: 8 de Clubes 010000: Joker 100001: Ás de Diamantes 000011: 3 de Clubes 000110: 6 de Clubes 001100: Rainha de Clubes 011000: 8 de Pás 110001: Ás de Corações 100010 : 2 de Diamantes 000101: 5 de Clubes 001010: 10 de Clubes 010100: 4 de Espadas 101001: 9 de Diamantes 010011: 3 de Espadas 100111: 7 de Diamantes 001111: 2 de Clubes 011110: Joker 111101: Rei dos Corações 111010: 10 De Corações 110100: 4 de Corações 101000: 8 de Diamantes 010001: Ás de Espadas 100011: 3 de Diamantes 000111: 7 de Clubes 001110: Ás de Clubes 011100: Rainha de Pás 111001: 9 de Corações 110010: 2 de Corações 100100: 4 De Diamantes 001001: 9 de Clubes 010010: 2 de Picas 100101: 5 de Diamantes 001011: Jack de Clubes 010110: 6 de Picas 101101: Rei de Diamantes 011011: Jack de Espadas 110111: 7 de Corações 101110: 8 de Corações 011101: Rei De Pás 111011: Jack de Corações 110110: 6 de Corações 101100: Rainha de Diamantes 011001: 9 de Pás 110011: 3 de Corações 100110: 6 de Diamantes 001101: Rei dos Clubes 011010: 10 de Pás 110101: 5 de Corações 101010: 10 De Diamantes 010101: 5 de Pás 101011: Jack de Diamantes 010111: 7 de Pás 101111: Rainha de Corações Castoffs: 000001: Ás de Clubes 000010: 2 de Clubes 111000: 8 de Corações 111100: Rainha de Corações Para lembrar: 1. Impossível Os clubes são valor de face - 13. 2. Pás Impossíveis são Jokers. 3. O 14 de Diamantes é o 8 de Diamantes. 4. O 15 de Diamantes é a Rainha dos Diamantes. 001110: Ás de Clubes 001111: 2 de Clubes 010000: Joker 011110: Joker 101110: 8 de Corações 101111: Rainha de Corações Desculpe Acima disso deve ler-se: 3. O 821714 de Diamonds8217 é o 8 de Hearts. 4. O 821715 de Diamonds8217 é a Rainha dos Corações. Eu não consigo fazer esta versão funcionar. A sequência funciona, mas não parece seguir a sequência vermelha e preta das cartas. Estou faltando alguma coisa Talvez você perdeu minhas alterações 1. Ive trocou a ordem para atender, em seguida, valor nominal. Assim, os dois primeiros bits são terno, e os bits restantes são o valor de face. 2. Um valor de face de 1 é o Ás, 2 o 2, e assim por diante. Em vez de contar a partir de 1 como no código original. Isso é muito legal. Só tenho uma pergunta: tentar tentar descobrir se a natureza cíclica da sequência de De Bruijn é interrompida / quebrada, encurtando-a de modo que 52 cartas possam ser usadas. Se você cortar o deck, completar o corte e, em seguida, cortar novamente, isso ainda funciona, eu acho que o próximo cartão na seqüência, após o 101010 (Jack of Hearts), é 110101 (14 de clubes) ou 010101 (6 de Clubes) dependendo se a regra de troca é usada, mas a carta de ciclo é o Ás de clubes. Ou eu perdi alguma coisa (provavelmente realmente óbvio) Obrigado por compartilhar, it8217s grande aplicação excelente do sistema binário. me dê algo mais. thank you with best wishes n. gururajan The order of 52 cards listed by Christian does not appear to always work when the sequence wraps around. I8217ll try to show an example below since I may be missing something and hopefully someone can correct me, but first just to keep things straight, here is a summary of how I believe things are defined: 4 MSBs of the binary sequence when decoded to a decimal number represents the value of the card according to this rule: 4 MSBs 1 value of the card (ignoring suits) where 1 Ace, 2 Two, 8230 11 Jack, 12 Queen, 13 King. For example: 000001: Ace of Clubs - gt 0 1 Ace 100001: 9 of Clubs - gt 8 1 Nine In the above, the 2 LSBs represent the suit as follows: 00 0 Diamonds 01 1 Clubs 10 2 Hearts 11 3 Spades When looking at sequences cards: 0 red 1 black This sequence works for the 6 cards dealt out after a cut and note this does not involve the sequence wrapping around (i. e. wrap occurs when considering the last card which is the Jack of Hearts and then the first card which is the Ace of Clubs): 100001 Decodes to: 9 of Clubs This corresponds to the 9 of clubs being the last card and this means the 6 cards for this sequence are the first 6 cards in Christian8217s list: Ace of Clubs Ace of Hearts 2 of Diamonds 3 of Diamonds 5 of Diamonds 9 of Clubs However, this sequence after a cut starting with the 6 of Clubs does not work and this does involve the sequence wrapping around since the Jack of Hearts and the Ace of Clubs are involved (i. e. the first and last cards of the list): 101000 Decodes to: Jack of Diamonds These are the 6 cards for this sequence and notice how the last card below is the 3 of Diamonds and not the Jack of Diamonds that would be expected: 6 of Clubs Jack of Hearts (last card in the list) Ace of Clubs (1st card in the list) Ace of Hearts 2 of Diamonds 3 of Diamonds Please let me know if you see anything that I8217m missing. BTW, maybe this is what 8216H8217 was asking about but I wasn8217t sure. You8217re right 8211 it doesn8217t wrap around, because we8217re missing 12 imaginary cards. We thought that was a reasonable compromise in return for being able to do the trick with a full standard deck. OK, thanks for confirming. In Alex Stone8217s book Fooling Houdini, he described the trick with 52 cards and there were no restrictions regarding the wrap around. Apparently there is a sequence that does work with 52 cards but without the nice encoding that you have incorporated Alex does mention that the order of the 52 cards needs to be memorized and gives tips for this memorization task. With your compromised approach, the deck needs to be cut such it is no closer than 6 cards from the end, but thanks to your encoding I think it is still a very powerful trick One way to handle the cut card restriction could be to ask someone to cut the deck. If they cut it very thin at the end (possibly within the last 5 cards) then you could simply 8216burn8217 6 cards before displaying the 6 cards that will be used for the trick. There are probably better ways to handle this situation where the cut is within the last 5 cards8230 Hi, I8217m also experimenting with the idea (bot not using the color information but suit information needing less cards to be taken by spectators and reduces also the cycling problem). Concerning the cycling problem: why not just take thin cards and add 12 duplicates to close the loop and use a simple rule such as face value to read by subtracting 13 whenever the value is too large. Christian8217s idea can be made cyclical for performance if you assemble the stack according to Christian8217s binary setup and substitutions, and then forget about the maths (apologies to Christian and Dave). Memorise the stack resulting from the binary work above, as you would a standard memorised stack (e. g. Aronson8217s or Mnemonica), and then go from there. The red-black sequence of the six cards will give you the card and therefore its position in the stack to start with, and then you move six along the memorized stack to get your selections. Deixe uma resposta

No comments:

Post a Comment