Contador hexadecimal


10

Imagem da mesa de conversão hexagonal c / contador

Hexadecimal é um sistema de contagem de base 16 que vai de 0para f. Seu trabalho é fazer um contador que mostre esses números.

Exemplo:

$ python counter.py
1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30

Regras:

  • Os números podem ser separados por espaços, tabulações ou novas linhas.
  • O número mínimo para o qual você deve ir é 30(48 em decimal).
    • Você também pode fazer o programa imprimir números para sempre até que seja interrompido.
  • As letras podem estar em maiúsculas ou minúsculas ( Aou a).
  • Não são permitidas funções internas (que afetam diretamente as conversões / contagens hexadecimais).
  • Zeros à esquerda são permitidos
  • Pode começar a partir de 1ou0
  • O menor código vence!

@ Sp3000 Como estão embutidos? Convertendo decimal em hexadecimal?
fase

@ Sp3000 Não são permitidas funções incorporadas!
fase

4
Que tal funções gerais de conversão de base então?
Sp3000 12/07/2015

11
@ Sp3000 Claro (ignore isso, limite de 15 caracteres)
fase

11
@Mauris Yes! Essa certeza vai ser interessante ...
fase

Respostas:


5

Pitão - 12 bytes

Usa produto cartesiano e classifica no final para obter a ordem correta e depois se junta por espaços. Imprime 00-ffinclusive.

jdS^s+<G6UT2

Experimente online aqui .

jd             Join by spaces
 S             Sort lexiographically
  ^    2       Cartesian product repeat twice
   s+          Append then concatenate entire list
    <G6        First six of alphabet
    UT         Range 0-9


6

CJam, 21 14 bytes

A,_6,'Af++m*S*

Imprime os números de 00 a 9F.

Experimente on-line no intérprete CJam .

Como funciona

A,             e# Push [0 ... 9].
  _            e# Push a copy.
   6,          e# Push [0 ... 5].
     'Af+      e# Add 'A' to each. This pushes "ABCDEF".
         +     e# Concatenate. This pushes [0 ... 9 'A' ... 'F'].
          m*   e# Cartesian product. This pushes [[0 0] ... [9 'F'].
            S* e# Join, separating by spaces.

5

Python 2, 52

a=0
for b in'0123456789ABCDEF'*4:print`a`+b;a+=b>'E'

Imprime 00em 3F. Aproveita o fato de o primeiro dígito aser sempre um número nesse intervalo. Faz um loop através de quatro ciclos do segundo dígito b, incrementando asempre que o segundo dígito é F.

Este é um caractere mais curto que o mais direto

for a in'0123':
 for b in'0123456789ABCDEF':print a+b

n ='0123'deve salvar alguns caracteres
Caridorc 13/07/2015

@Caridorc Como exatamente?
Xnor

escrevendothing in n + restofstring
Caridorc 13/07/2015

@Caricord Não sei o que dizer, é mais tempo para fazern='0123' for a in n: for b in n+'456789ABCDEF':print a+b
xnor

2
@Caridorc Um atalho de metal que eu uso é que economizar para uma variável custa 4 caracteres, por isso é necessário> 4 caracteres de economia para compensar, portanto, salvar 4 caracteres para 0123outra coisa não é suficiente.
Xnor

5

JavaScript (ES6), 57 bytes

A mesma abordagem que as do Python, suponho.

for(i of c='0123456789ABCDEF')for(j of c)console.log(i+j)

4

TI-Basic, 63 bytes

:For(I,0,4,16⁻¹
:Disp sub(" 0123456789ABCDEF",1+16fPart(I),2
:Output(7,1,int(I
:End

São 63 bytes, de acordo com a tela de gerenciamento de memória da minha calculadora, uma TI-84 +. Certifique-se de iniciar o programa com uma tela inicial parcialmente cheia!


Você se lembrou de subtrair o comprimento do cabeçalho de 9 bytes e o nome do programa do comprimento do código?
21815 Lirtosiast

4

Befunge-93, 57 bytes

<_v#-*44:+1,*84,g2:\,g2:\
^ >$1+:9-!#@_0
0123456789ABCDEF

Imprime números de 00até 8F. Se você prefere que seus programas sejam executados para sempre, a versão abaixo não termina e gera continuamente todos os números de 00até FF.

<_v#-*44:+1,*84,g2:\,g2:\
^ >$1+:35*`!*0
0123456789ABCDEF

Você pode salvar alguns bytes em -98 com <_v # -f: +1, ', g2: \, g2: \. Não consigo ver muitas melhorias além disso.
12136 Jacob

0123456789ABCDEF01g::88+/2-0g,88+%0g,9,1+01p
Lynn

Isso é 44 bytes. Faz um loop para sempre, como sua segunda solução, e imprime resultados errados após o segundo 1F. Requer uma implementação (como a implementação de referência bef.c) que ignora silenciosamente comandos desconhecidos ( ABCDEF).
Lynn

(O OP menciona que não há problema em uma solução "quebrar" em algum lugar após o acerto 30- esta transbordará lentamente a pilha, então suponho que exista algum ponto de terminação. Além disso, a saída é separada por tabulação; o OP disse que estava tudo bem. ) Ah, a implementação do Befunge usada também deve inicializar todo o toro de 80x25 com espaços (ASCII 0x20).
Lynn

@Mauris Em relação ao seu comentário sobre a implementação que precisa instanciar todo o toro com espaços, isso afetaria a contagem de bytes do meu código apresentado? Eu contei apenas os caracteres necessários em vez de preencher os cantos com espaços.
Sok

2

C, 78 75 bytes

x(y){return y+48+y/10*7;}f(j){for(j=0;printf("%c%c ",x(j/16),x(15&j++)););}

Definimos uma função f()a ser chamada sem argumentos para impressão e uma função auxiliar x(int). Isso quebra em FF.

Surpreendentemente, esse é um byte menor que o mais óbvio:

char*s="0123456789ABCDEF";h(j){for(j=0;printf("%c%c ",s[j/16],s[15&j++]););}

Aviso: não é recomendável executar esse código fora de um ambiente de depuração ...

Teste:

int main(int argc, char** argv) {
    f();
    return 0;
}

Resultado:

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 (...)

Obviamente, a abordagem mais robusta (e enganosa) é essa função de 34 bytes:

g(i){for(i=0;printf("%x ",i++););}

11
Começou a tentar isso, mas minha resposta foi muito semelhante. Você pode salvar vários bytes, transformando o primeiro% c em% d e omitindo a função. Só é válido até 9F, no entanto.
Alchymist

return y+poderia ser y+=.
23818 Jonathan Frech

2

Pitão, 17 bytes

VJs++kUT<G6FYJ+NY

Experimente aqui

Como funciona:

         <G6         # "abcdef"
       UT            # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      k              # an empty string (so + means concatenation, not addition)
   s++               # join them all ("0123456789abcdef")
  J                  # call this J
 V                   # for each N in J...
            FYJ      # for each Y in J...
               +NY   # print N and Y

jb^+jkUT<G6 2usa o produto cartesiano de fazer a mesma coisa, ainda parece golfable ...
FryAmTheEggman

2

Javascript ES6, 67 62 bytes

(x=''.replace.bind('0123456789ABCDEF',/./g))(n=>x(o=>' '+n+o))

2

J, 22 bytes

>{;~'0123456789abcdef'

Conta para ff. Imprime uma nova linha extra entre cada bloco de 0x10números, da seguinte forma:

...
0d
0e
0f

10
11
...

2

Caxumba - 65 bytes

S Q="0123456789ABCDEF" F I=1:1:16 F J=1:1:16 W $E(Q,I),$E(Q,J),!

Não ... A caxumba ainda não está morta! :-)


2

CJam, 22 bytes

1{_GbA,6,'af++f=oNo)}h

Isso dura para sempre e, portanto, é provavelmente um dos raros momentos em que é uma boa ideia não incluir um link permanente.


oNoé o mesmo que nno TIO.
Esolanging Fruit

2

TheC64Mini e Commodore BASIC (C64 / 128, PET, VIC-20, C16 / + 4) - 164 bytes BASIC e tokenizados usados

 0 fOd=.to255:n=d:fOi=1to.stE-1:h%(i)=n/(16^i):n=n-(h%(i)*(16^i)):nEi:h$=""
 1 fOi=1to.stE-1:ifh%(i)<10tHh$=h$+cH(48+h%(i))
 2 ifh%(i)>9tHh$=h$+cH(55+h%(i))
 3 nEi:?h$"  ";:nEd

Imprime um espaço duplo após o número hexadecimal para alinhar bem a impressão nas colunas 40/80 e nas 22 colunas na VIC-20.

Commodore Plus / 4 Hex contador


2

brainfuck , 2902 bytes

Fácil de superar, mas vale a pena tentar

+>+[<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<<<[-]++++++++++++++++++++++++++++++++++++++++++++++++>[-]<[>+<<+>-]<[>+<-]<]>+<<+<<[>>->+<<<-]>>>[<<<+>>>-]<[->+<<[>>>-<<+<-]>[<+>-]>>[<->[-]]<[<<<+>>>-]<]>>[-]<<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>.>.>>>++++++++++++++++++++++++++++++++.[-]<<[-]<<[>>+<<<+>-]<[>+<-]>>>>>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++<<[<<<<+>>>>-]+>>[<<<<<<-<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>[>>>>-<<<<[-]]>>>>>>[-]++<<[<<<<<+>+>>>>-]<<<<<[>>>>>+<<<<<-]>[<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>[-]]>>>>>>[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>[-]<[>+<<<+>>-]<<[>>+<<-]>>>>>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++<<[<<<<+>>>>-]+>>[<<<<<<-<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>[>>>>-<<<<[-]]>>>>>>[-]+++<<[<<<<<+>+>>>>-]<<<<<[>>>>>+<<<<<-]>[<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>[-]]>>>>>>[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>[-]<<[>>+<<<+>-]<[>+<-]>>>[<<<<+>>>>-]+>[<<<<<-<+>>>>>>-]<<<<<<[>>>>>>+<<<<<<-]>[>>>>-<<<<[-]]>>>>>>+++++<<[<<<<<+>+>>>>-]<<<<<[>>>>>+<<<<<-]>[<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>[-]]>>>>>>[-]<<<<<<]>++++++<<+<<[>>->+<<<-]>>>[<<<+>>>-]<[->+<<[>>>-<<+<-]>[<+>-]>>[<->[-]]<[<<<+>>>-]<]>>[-]<<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>[-]<[>+<<<+>>-]<<[>>+<<-]>>>[<<<<+>>>>-]+>[<<<<<-<+>>>>>>-]<<<<<<[>>>>>>+<<<<<<-]>[>>>>-<<<<[-]]>>>>>>++++<<[<<<<<+>+>>>>-]<<<<<[>>>>>+<<<<<-]>[<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>[-]]>>>>>>[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>+>>>+<<<<<<<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[-]<<<<<<]>++<<+<<[>>->+<<<-]>>>[<<<+>>>-]<[->+<<[>>>-<<+<-]>[<+>-]>>[<->[-]]<[<<<+>>>-]<]>>[-]<<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>-----<<<[-]>>>[<<<+<+>>>>-]<<<<[>>>>+<<<<-]>>>>+++++>+<<<<<<<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[-]<<<<<<]>+++<<+<<[>>->+<<<-]>>>[<<<+>>>-]<[->+<<[>>>-<<+<-]>[<+>-]>>[<->[-]]<[<<<+>>>-]<]>>[-]<<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>>-----<<[-]>>[<<+<<+>>>>-]<<<<[>>>>+<<<<-]>>>>+++++>+<<<<<<<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[-]<<<<<<]>++++<<+<<[>>->+<<<-]>>>[<<<+>>>-]<[->+<<[>>>-<<+<-]>[<+>-]>>[<->[-]]<[<<<+>>>-]<]>>[-]<<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>+>[-]++++++++++++++++++++++++++++++++++++++++++++++++>>>+<<<<<<<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>[-]<<<<<<]>+++++<<+<<[>>->+<<<-]>>>[<<<+>>>-]<[->+<<[>>>-<<+<-]>[<+>-]>>[<->[-]]<[<<<+>>>-]<]>>[-]<<<<[>>+>+<<<-]>>[<<+>>-]>[[-]>>>>[-]<[>+<<<+>>-]<<[>>+<<-]>>>[<<<<+>>>>-]+>[<<<<<-<+>>>>>>-]<<<<<<[>>>>>>+<<<<<<-]>[>>>>-<<<<[-]]>>>>>>++++++<<<<<<+>>>>[<<<<[-]<+>>>>>-]<<<<<[>>>>>+<<<<<-]>[<<<[-]>[-]>>>>>>>>[<<<<<<<<+>+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>[-]]>>>>>>[-]<<<<<<]<<<[>>+>+<<<-]>>[<<+>>-]>[[-]<<<[-]>[-]>>]<<]

Experimente online!


Isso seria mais curto se você apenas gerasse os caracteres 0-Fe depois codificasse a impressão. Como você conseguiu durar tanto tempo?
Jo rei

@JoKing possivelmente, mas eu só queria se divertir
Krzysztof Szewczyk

Esse comentário não é uma admissão de que esta resposta não é um candidato sério para os critérios vencedores do desafio?
pppery 09/09/19

1

Python 2, 66 55 bytes

Esta deveria realmente ter sido a abordagem mais óbvia para mim ..

a='0123456789ABCDEF'
for x in a:
 for y in a:print x+y

Antigo (66 bytes) : Tecnicamente, isso causa um erro depois FF, mas atinge 30.

n=1;a='0123456789ABCDEF'
while 1:print a[n/16]*(n>15)+a[n%16];n+=1

Presumi que a formatação de string não era permitida, pois tenho certeza de que passaria pela conversão de base, mas se fosse permitido, seriam 29 bytes:

n=1
while 1:print"%x"%n;n+=1

1

Java, 104 bytes

char t[]="0123456789abcdef".toCharArray(),i;void f(){for(;i<99;)System.out.println(""+t[i/16]+t[i++%16]);}

Se o i<99for removido, ele ainda alcançará 30, mas eventualmente trava. Não tenho certeza se isso é aceitável.


1

J, 47 bytes

'0123456789abcdef'{~([:|:2 256$(]#i.),256$i.)16

imprime 00 a ff


11
Uma maneira muito mais curta:>{;~'0123456789abcdef'
Lynn

Uau, isso é muito bom! Mas por que você não publicou como resposta, são apenas 22 bytes!
gar

1

Javascript 74 72 65 60

//for(i=0,a="0123456789ABCDEF";i++<49;)console.log(a[i>>4]+a[i%16])
for(i=0;i++<48;)console.log((i>>4)+"0123456789ABCDEF"[i%16])


1

Perl 6 , 34 bytes

O mais curto que posso apresentar que não usa nenhum tipo de conversão é:

put [X~] (|(0..9),|('A'..'F'))xx 2 # 34 bytes

imprime 00... FFespaço separado em ordem.
Se você quiser mais, pode trocar 2por um número maior.
(não use um número maior que 4, pois concatena os valores antes de produzir qualquer coisa, para usar uma quantidade significativa de RAM)


O mais curto que nunca para de escrever valores hexadecimais

put [R~] (|(0..9),|('A'..'F'))[.polymod: 16 xx*]for 0..* # 56 bytes

Se printffosse permitido

printf "%X ",$_ for 0..* # 24 bytes

Se uma função de conversão básica fosse permitida

put .base(16)for 0..* # 21 bytes

1

C ++ 14 - 135

#include<string>
#include<iostream>
void f(){std::string a="0123",b="0123456789ABCDEF";for(char c:a)for(char d:b)std::cout<<c<<d<<" ";}

Não, está tudo bem como está. Qual compilador você está usando? Eu fico 'string' is not a member of 'std'com o meu.
Dennis

@ Dennis Esse é um bom ponto. Eu sempre esqueço que requer a inclusão de string como ela própria. Fixo.
Yytsi 17/01/16

1. Estou recebendo o mesmo erro couttambém. Eu acho que você iostreamtambém precisa . 2. Imprime os números sem separação. O desafio requer espaços, guias ou novas linhas. 3. Você deve mencionar a versão exigida do C ++.
Dennis

1

jq 1.5: 65 59 caracteres

(Código de 56 caracteres + opção de linha de comando de 3 caracteres.)

[range(10)]+"a b c d e f"/" "|{a:.[],b:.}|"\(.a)\(.b[])"

Exemplo de execução:

bash-4.3$ jq -n -r '[range(10)]+"a b c d e f"/" "|{a:.[],b:.}|"\(.a)\(.b[])"' | head
00
01
02
03
04
05
06
07
08
09

Teste on-line (a passagem do -rURL não é suportada - verifique você mesmo Raw Output.)

jq 1.5: 56 caracteres

(Código de 53 caracteres + opção de linha de comando de 3 caracteres.)

[[range(10)]+"a b c d e f"/" "|"\(.[])\(.[])"]|sort[]

Isso produz uma saída correta, no entanto, não é exatamente um contador: ele não gera os valores em ordem, apenas os classifica depois.

Teste on-line (a passagem do -rURL não é suportada - verifique você mesmo Raw Output.)


o seu link para jq não funciona, e quando eu fixa-lo ele diz que não há um arquivo de índice no github: P
fase

Opa Obrigado @Phase. Eu estava muito concentrado na contagem de caracteres.
131315 manatwork

1

Dyalog APL , 12 bytes

       ∘.,⍨16↑⎕D,⎕A
 00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F 
 10  11  12  13  14  15  16  17  18  19  1A  1B  1C  1D  1E  1F 
 20  21  22  23  24  25  26  27  28  29  2A  2B  2C  2D  2E  2F 
 30  31  32  33  34  35  36  37  38  39  3A  3B  3C  3D  3E  3F 
 40  41  42  43  44  45  46  47  48  49  4A  4B  4C  4D  4E  4F 
 50  51  52  53  54  55  56  57  58  59  5A  5B  5C  5D  5E  5F 
 60  61  62  63  64  65  66  67  68  69  6A  6B  6C  6D  6E  6F 
 70  71  72  73  74  75  76  77  78  79  7A  7B  7C  7D  7E  7F 
 80  81  82  83  84  85  86  87  88  89  8A  8B  8C  8D  8E  8F 
 90  91  92  93  94  95  96  97  98  99  9A  9B  9C  9D  9E  9F 
 A0  A1  A2  A3  A4  A5  A6  A7  A8  A9  AA  AB  AC  AD  AE  AF 
 B0  B1  B2  B3  B4  B5  B6  B7  B8  B9  BA  BB  BC  BD  BE  BF 
 C0  C1  C2  C3  C4  C5  C6  C7  C8  C9  CA  CB  CC  CD  CE  CF 
 D0  D1  D2  D3  D4  D5  D6  D7  D8  D9  DA  DB  DC  DD  DE  DF 
 E0  E1  E2  E3  E4  E5  E6  E7  E8  E9  EA  EB  EC  ED  EE  EF 
 F0  F1  F2  F3  F4  F5  F6  F7  F8  F9  FA  FB  FC  FD  FE  FF 

Pela primeira vez, o APL corresponde ao Pyth.
Adám 03/09/15

1

Malbolge , 900 bytes

Ser melhorado...

D'``@"\7}|X9E1gwuR21=p(:9%IZYEg}eA/ya>O_)([Zvotm3qponmfN+Lbg`ed]\"CB^W\Uy<;WVONSLp3ONMLEDhH*)?>b%A@?87[;:9876/S3,P0/.-&J$)"'~D|{"y?}|utyr8potmrqpi/mfN+Lbg`e^$bDZ_^]VzZSXQVUTSLp3ONMLEDhH*)EDCB;@?8\6|:32V6v.32+O)o'&J*)i'&%|Bcb~w|u;yxwvutVrkj0nmfN+iKg`_%cE[`Y}@V[ZYXWPtT6LKJImM/KJIBAe(D=<A:98\[;{32V6v.-,P0).',%I)"!E%|#"y?w_{ts9Zvutsrkpi/mfNjihg`e^$b[Z~X]\[ZYRv98TSLKoO10FKDh+GFE>CB;_?>=}|49870/.R2+*Non&%I#"!&%${A!~}_u;yxqpo5mrqpoh.lkdibgf_%]\[!_XW{[ZYXQPt7SRQPOHGkKJIHAF?cC<;@?8\6;492V6v.-,P*p.'K+$j"'~D|#"y~wv<]yxqvutsrk1onmfN+cba`&d]#DZ_^]VzTSXQVOs65QJINGkE-IBAe(D=<A:98\654981Uv.32+*)M-,%k#(!E}$#"!x>v{t:xwputm3kpoh.fN+Lbg`ed]\"!Y^]VzZYXQVOsS54JImMFKJIHAe?>C<`@?87[;{32V05.-2+O)o-,+$H('&}Cdzy~wv<]sxqvonm3k1oQmf,jihgfeG]#a`_X|V[TxXQPUTMLp3ONMLEDhH*)ED=a;@?>76;4X816/43,P*).',%I#i!&}|Bcb~w|u;yxwputm3qSong-kjihgfH%]\a`_XW{UTYXQuUTMRKPOHlFKDhBAe?>=B;_9>=6Z:981Uv.32+*)M-,%k#(!E%$#c!x>|u;yxZpo5srqSi/z

Experimente online!




1

8088 Assembly, IBM PC DOS, 34 bytes

Bytes xxd:

00000000: 43e8 0900 e806 00b0 20cd 10eb f3b1 04d2  C....... .......
00000010: c38a c324 0f3c 0a7c 0204 0704 30b4 0ecd  ...$.<.|....0...
00000020: 10c3

Desmontado:

        BYTE_LOOP: 
43          INC  BX             ; increment counter  
E8 0009     CALL HB             ; display high byte 
E8 0006     CALL HB             ; display low byte 
B0 20       MOV  AL, ' '        ; display space delimiter
CD 10       INT  10H            ; call BIOS, write char to console 
EB F3       JMP  BYTE_LOOP      ; keep looping forever
        HB PROC 
B1 04       MOV  CL, 4          ; set up bitshift for 4 bits 
D2 C3       ROL  BL, CL         ; shift counter left 4 bits 
8A C3       MOV  AL, BL         ; put counter into AL 
24 0F       AND  AL, 0FH        ; isolate nibble 
3C 0A       CMP  AL, 0AH        ; is nibble A-F? 
7C 02       JL   NOT_ALPHA      ; if not, skip adjustment 
04 07       ADD  AL, 'A'-'9'-1  ; adjust ASCII value to A-F 
        NOT_ALPHA: 
04 30       ADD  AL, '0'        ; decimal to binary convert
B4 0E       MOV  AH, 0EH        ; BIOS tty function
CD 10       INT  10H            ; call BIOS, write char to console 
C3          RET                 ; return to program
        HB ENDP

Exigível para DOS autônomo do PC, a saída é para o console e continuará sendo exibida até o programa ser interrompido. Apenas um programa de manipulação ASCII zero aqui. Simplesmente não há métodos internos ou convenientes nas APIs x86 ou DOS / BIOS para converter valores binários em seqüências de caracteres para saída.

Resultado:

insira a descrição da imagem aqui


1

MUMPS , 57 bytes

f i=1:1:48 w $tr(i\16,0),$e("0123456789abcdef",i#16+1),!

Resultado

>d ^xmsdgolf
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
10
11
..
28
29
2a
2b
2c
2d
2e
2f
30

Explicação

f i=1:1:48                     ; loop from 1 to 48
w $tr(i\16,0)                  ; print i div 16, and ditch any zeros
$e("0123456789abcdef",i#16+1)  ; extract the nth character from the string, where n is i mod 16 + 1
!                              ; crlf

0

Haskell, 52 bytes

a="0123456789abcdef";main=mapM putStrLn$mapM id[a,a]

0

Python 2 - 57 bytes

h='0123456789ABCDEF'
' '.join([i+j for i in h for j in h])

Isso gera 00 para FF, com espaços entre.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.