Show ASCII table: Difference between revisions

From Rosetta Code
Content added Content deleted
(→‎{{header|Perl 6}}: Add a Perl 6 example)
Line 126: Line 126:
47 : / 63 : ? 79 : O 95 : _ 111 : o 127 : Del
47 : / 63 : ? 79 : O 95 : _ 111 : o 127 : Del
</pre>
</pre>

=={{header|Perl 6}}==
<lang perl6>constant \N = 16;
constant \cell = 5;
constant $top = join '─' x cell, '┌', '┬' xx N-1, '┐';
constant $mid = join '─' x cell, '├', '┼' xx N-1, '┤';
constant $bot = join '─' x cell, '└', '┴' xx N-1, '┘';

sub row (*@row) { '│' ~ (join '│', @row».&center) ~ "│\n" }
sub center ($s){
my $c = cell - $s.chars;
my $pad = ' ' x ceiling($c/2);
sprintf "%{cell}s", "$s$pad";
}

sub name ($n) {
given $n {
when * < 33 { (0x2400 + $n).chr }
when 127 { '␡' }
default { $n.chr }
}
}

my @rows = map -> @row {
row(@row».fmt("%02X")) ~
row(@row».fmt("%03d")) ~
row(@row».&name)
}, ^128 .rotor: N;

say $top;
print @rows.join: "$mid\n";
say $bot;</lang>
{{out}}
<pre>┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ 00 │ 01 │ 02 │ 03 │ 04 │ 05 │ 06 │ 07 │ 08 │ 09 │ 0A │ 0B │ 0C │ 0D │ 0E │ 0F │
│ 000 │ 001 │ 002 │ 003 │ 004 │ 005 │ 006 │ 007 │ 008 │ 009 │ 010 │ 011 │ 012 │ 013 │ 014 │ 015 │
│ ␀ │ ␁ │ ␂ │ ␃ │ ␄ │ ␅ │ ␆ │ ␇ │ ␈ │ ␉ │ ␊ │ ␋ │ ␌ │ ␍ │ ␎ │ ␏ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 1A │ 1B │ 1C │ 1D │ 1E │ 1F │
│ 016 │ 017 │ 018 │ 019 │ 020 │ 021 │ 022 │ 023 │ 024 │ 025 │ 026 │ 027 │ 028 │ 029 │ 030 │ 031 │
│ ␐ │ ␑ │ ␒ │ ␓ │ ␔ │ ␕ │ ␖ │ ␗ │ ␘ │ ␙ │ ␚ │ ␛ │ ␜ │ ␝ │ ␞ │ ␟ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ 29 │ 2A │ 2B │ 2C │ 2D │ 2E │ 2F │
│ 032 │ 033 │ 034 │ 035 │ 036 │ 037 │ 038 │ 039 │ 040 │ 041 │ 042 │ 043 │ 044 │ 045 │ 046 │ 047 │
│ ␠ │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │ * │ + │ , │ - │ . │ / │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 30 │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 3A │ 3B │ 3C │ 3D │ 3E │ 3F │
│ 048 │ 049 │ 050 │ 051 │ 052 │ 053 │ 054 │ 055 │ 056 │ 057 │ 058 │ 059 │ 060 │ 061 │ 062 │ 063 │
│ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ : │ ; │ < │ = │ > │ ? │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 40 │ 41 │ 42 │ 43 │ 44 │ 45 │ 46 │ 47 │ 48 │ 49 │ 4A │ 4B │ 4C │ 4D │ 4E │ 4F │
│ 064 │ 065 │ 066 │ 067 │ 068 │ 069 │ 070 │ 071 │ 072 │ 073 │ 074 │ 075 │ 076 │ 077 │ 078 │ 079 │
│ @ │ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ K │ L │ M │ N │ O │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 50 │ 51 │ 52 │ 53 │ 54 │ 55 │ 56 │ 57 │ 58 │ 59 │ 5A │ 5B │ 5C │ 5D │ 5E │ 5F │
│ 080 │ 081 │ 082 │ 083 │ 084 │ 085 │ 086 │ 087 │ 088 │ 089 │ 090 │ 091 │ 092 │ 093 │ 094 │ 095 │
│ P │ Q │ R │ S │ T │ U │ V │ W │ X │ Y │ Z │ [ │ \ │ ] │ ^ │ _ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 60 │ 61 │ 62 │ 63 │ 64 │ 65 │ 66 │ 67 │ 68 │ 69 │ 6A │ 6B │ 6C │ 6D │ 6E │ 6F │
│ 096 │ 097 │ 098 │ 099 │ 100 │ 101 │ 102 │ 103 │ 104 │ 105 │ 106 │ 107 │ 108 │ 109 │ 110 │ 111 │
│ ` │ a │ b │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │ m │ n │ o │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 70 │ 71 │ 72 │ 73 │ 74 │ 75 │ 76 │ 77 │ 78 │ 79 │ 7A │ 7B │ 7C │ 7D │ 7E │ 7F │
│ 112 │ 113 │ 114 │ 115 │ 116 │ 117 │ 118 │ 119 │ 120 │ 121 │ 122 │ 123 │ 124 │ 125 │ 126 │ 127 │
│ p │ q │ r │ s │ t │ u │ v │ w │ x │ y │ z │ { │ | │ } │ ~ │ ␡ │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘</pre>



=={{header|Ring}}==
=={{header|Ring}}==

Revision as of 12:37, 9 August 2018

Show ASCII table is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task

Show ASCII character set from values 32 to 127 in table format.


C

Translation of: Go

<lang c>#include <stdio.h>

int main() {

   int i, j;
   char k[4];
   for (i = 0; i < 16; ++i) {
       for (j = 32 + i; j < 128; j += 16) {
           switch (j) {
               default:  sprintf(k, "%c", j); break;
               case 32:  sprintf(k, "Spc"); break;
               case 127: sprintf(k, "Del"); break;                
           }
           printf("%3d : %-3s   ", j, k);
       }
       printf("\n");    
   }                    
   return 0;

}</lang>

Output:
 32 : Spc    48 : 0      64 : @      80 : P      96 : `     112 : p     
 33 : !      49 : 1      65 : A      81 : Q      97 : a     113 : q     
 34 : "      50 : 2      66 : B      82 : R      98 : b     114 : r     
 35 : #      51 : 3      67 : C      83 : S      99 : c     115 : s     
 36 : $      52 : 4      68 : D      84 : T     100 : d     116 : t     
 37 : %      53 : 5      69 : E      85 : U     101 : e     117 : u     
 38 : &      54 : 6      70 : F      86 : V     102 : f     118 : v     
 39 : '      55 : 7      71 : G      87 : W     103 : g     119 : w     
 40 : (      56 : 8      72 : H      88 : X     104 : h     120 : x     
 41 : )      57 : 9      73 : I      89 : Y     105 : i     121 : y     
 42 : *      58 : :      74 : J      90 : Z     106 : j     122 : z     
 43 : +      59 : ;      75 : K      91 : [     107 : k     123 : {     
 44 : ,      60 : <      76 : L      92 : \     108 : l     124 : |     
 45 : -      61 : =      77 : M      93 : ]     109 : m     125 : }     
 46 : .      62 : >      78 : N      94 : ^     110 : n     126 : ~     
 47 : /      63 : ?      79 : O      95 : _     111 : o     127 : Del   

Go

<lang go>package main

import "fmt"

func main() {

   for i := 0; i < 16; i++ {
       for j := 32 + i; j < 128; j += 16 {
           k := string(j)
           switch j {
           case 32:
               k = "Spc"
           case 127:
               k = "Del"
           }
           fmt.Printf("%3d : %-3s   ", j, k)
       }
       fmt.Println()
   }

} </lang>

Output:
 32 : Spc    48 : 0      64 : @      80 : P      96 : `     112 : p     
 33 : !      49 : 1      65 : A      81 : Q      97 : a     113 : q     
 34 : "      50 : 2      66 : B      82 : R      98 : b     114 : r     
 35 : #      51 : 3      67 : C      83 : S      99 : c     115 : s     
 36 : $      52 : 4      68 : D      84 : T     100 : d     116 : t     
 37 : %      53 : 5      69 : E      85 : U     101 : e     117 : u     
 38 : &      54 : 6      70 : F      86 : V     102 : f     118 : v     
 39 : '      55 : 7      71 : G      87 : W     103 : g     119 : w     
 40 : (      56 : 8      72 : H      88 : X     104 : h     120 : x     
 41 : )      57 : 9      73 : I      89 : Y     105 : i     121 : y     
 42 : *      58 : :      74 : J      90 : Z     106 : j     122 : z     
 43 : +      59 : ;      75 : K      91 : [     107 : k     123 : {     
 44 : ,      60 : <      76 : L      92 : \     108 : l     124 : |     
 45 : -      61 : =      77 : M      93 : ]     109 : m     125 : }     
 46 : .      62 : >      78 : N      94 : ^     110 : n     126 : ~     
 47 : /      63 : ?      79 : O      95 : _     111 : o     127 : Del   

Kotlin

Translation of: Go

<lang scala>// Version 1.2.60

fun main(args: Array<String>) {

   for (i in 0..15) {
       for (j in 32 + i..127 step 16) {
           val k = when (j) {
               32   -> "Spc"
               127  -> "Del"
               else -> j.toChar().toString()
           }
           System.out.printf("%3d : %-3s   ", j, k)
       }
       println()
   }

}</lang>

Output:
 32 : Spc    48 : 0      64 : @      80 : P      96 : `     112 : p     
 33 : !      49 : 1      65 : A      81 : Q      97 : a     113 : q     
 34 : "      50 : 2      66 : B      82 : R      98 : b     114 : r     
 35 : #      51 : 3      67 : C      83 : S      99 : c     115 : s     
 36 : $      52 : 4      68 : D      84 : T     100 : d     116 : t     
 37 : %      53 : 5      69 : E      85 : U     101 : e     117 : u     
 38 : &      54 : 6      70 : F      86 : V     102 : f     118 : v     
 39 : '      55 : 7      71 : G      87 : W     103 : g     119 : w     
 40 : (      56 : 8      72 : H      88 : X     104 : h     120 : x     
 41 : )      57 : 9      73 : I      89 : Y     105 : i     121 : y     
 42 : *      58 : :      74 : J      90 : Z     106 : j     122 : z     
 43 : +      59 : ;      75 : K      91 : [     107 : k     123 : {     
 44 : ,      60 : <      76 : L      92 : \     108 : l     124 : |     
 45 : -      61 : =      77 : M      93 : ]     109 : m     125 : }     
 46 : .      62 : >      78 : N      94 : ^     110 : n     126 : ~     
 47 : /      63 : ?      79 : O      95 : _     111 : o     127 : Del   

Perl 6

<lang perl6>constant \N = 16; constant \cell = 5; constant $top = join '─' x cell, '┌', '┬' xx N-1, '┐'; constant $mid = join '─' x cell, '├', '┼' xx N-1, '┤'; constant $bot = join '─' x cell, '└', '┴' xx N-1, '┘';

sub row (*@row) { '│' ~ (join '│', @row».&center) ~ "│\n" }

sub center ($s){

   my $c   = cell - $s.chars;
   my $pad = ' ' x ceiling($c/2);
   sprintf "%{cell}s", "$s$pad";

}

sub name ($n) {

   given $n {
       when * < 33 { (0x2400 + $n).chr }
       when 127  { '␡' }
       default   { $n.chr }
   }

}

my @rows = map -> @row {

   row(@row».fmt("%02X")) ~
   row(@row».fmt("%03d")) ~
   row(@row».&name)

}, ^128 .rotor: N;

say $top; print @rows.join: "$mid\n"; say $bot;</lang>

Output:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ 00  │ 01  │ 02  │ 03  │ 04  │ 05  │ 06  │ 07  │ 08  │ 09  │ 0A  │ 0B  │ 0C  │ 0D  │ 0E  │ 0F  │
│ 000 │ 001 │ 002 │ 003 │ 004 │ 005 │ 006 │ 007 │ 008 │ 009 │ 010 │ 011 │ 012 │ 013 │ 014 │ 015 │
│  ␀  │  ␁  │  ␂  │  ␃  │  ␄  │  ␅  │  ␆  │  ␇  │  ␈  │  ␉  │  ␊  │  ␋  │  ␌  │  ␍  │  ␎  │  ␏  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 10  │ 11  │ 12  │ 13  │ 14  │ 15  │ 16  │ 17  │ 18  │ 19  │ 1A  │ 1B  │ 1C  │ 1D  │ 1E  │ 1F  │
│ 016 │ 017 │ 018 │ 019 │ 020 │ 021 │ 022 │ 023 │ 024 │ 025 │ 026 │ 027 │ 028 │ 029 │ 030 │ 031 │
│  ␐  │  ␑  │  ␒  │  ␓  │  ␔  │  ␕  │  ␖  │  ␗  │  ␘  │  ␙  │  ␚  │  ␛  │  ␜  │  ␝  │  ␞  │  ␟  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 20  │ 21  │ 22  │ 23  │ 24  │ 25  │ 26  │ 27  │ 28  │ 29  │ 2A  │ 2B  │ 2C  │ 2D  │ 2E  │ 2F  │
│ 032 │ 033 │ 034 │ 035 │ 036 │ 037 │ 038 │ 039 │ 040 │ 041 │ 042 │ 043 │ 044 │ 045 │ 046 │ 047 │
│  ␠  │  !  │  "  │  #  │  $  │  %  │  &  │  '  │  (  │  )  │  *  │  +  │  ,  │  -  │  .  │  /  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 30  │ 31  │ 32  │ 33  │ 34  │ 35  │ 36  │ 37  │ 38  │ 39  │ 3A  │ 3B  │ 3C  │ 3D  │ 3E  │ 3F  │
│ 048 │ 049 │ 050 │ 051 │ 052 │ 053 │ 054 │ 055 │ 056 │ 057 │ 058 │ 059 │ 060 │ 061 │ 062 │ 063 │
│  0  │  1  │  2  │  3  │  4  │  5  │  6  │  7  │  8  │  9  │  :  │  ;  │  <  │  =  │  >  │  ?  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 40  │ 41  │ 42  │ 43  │ 44  │ 45  │ 46  │ 47  │ 48  │ 49  │ 4A  │ 4B  │ 4C  │ 4D  │ 4E  │ 4F  │
│ 064 │ 065 │ 066 │ 067 │ 068 │ 069 │ 070 │ 071 │ 072 │ 073 │ 074 │ 075 │ 076 │ 077 │ 078 │ 079 │
│  @  │  A  │  B  │  C  │  D  │  E  │  F  │  G  │  H  │  I  │  J  │  K  │  L  │  M  │  N  │  O  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 50  │ 51  │ 52  │ 53  │ 54  │ 55  │ 56  │ 57  │ 58  │ 59  │ 5A  │ 5B  │ 5C  │ 5D  │ 5E  │ 5F  │
│ 080 │ 081 │ 082 │ 083 │ 084 │ 085 │ 086 │ 087 │ 088 │ 089 │ 090 │ 091 │ 092 │ 093 │ 094 │ 095 │
│  P  │  Q  │  R  │  S  │  T  │  U  │  V  │  W  │  X  │  Y  │  Z  │  [  │  \  │  ]  │  ^  │  _  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 60  │ 61  │ 62  │ 63  │ 64  │ 65  │ 66  │ 67  │ 68  │ 69  │ 6A  │ 6B  │ 6C  │ 6D  │ 6E  │ 6F  │
│ 096 │ 097 │ 098 │ 099 │ 100 │ 101 │ 102 │ 103 │ 104 │ 105 │ 106 │ 107 │ 108 │ 109 │ 110 │ 111 │
│  `  │  a  │  b  │  c  │  d  │  e  │  f  │  g  │  h  │  i  │  j  │  k  │  l  │  m  │  n  │  o  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 70  │ 71  │ 72  │ 73  │ 74  │ 75  │ 76  │ 77  │ 78  │ 79  │ 7A  │ 7B  │ 7C  │ 7D  │ 7E  │ 7F  │
│ 112 │ 113 │ 114 │ 115 │ 116 │ 117 │ 118 │ 119 │ 120 │ 121 │ 122 │ 123 │ 124 │ 125 │ 126 │ 127 │
│  p  │  q  │  r  │  s  │  t  │  u  │  v  │  w  │  x  │  y  │  z  │  {  │  |  │  }  │  ~  │  ␡  │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘


Ring

<lang ring>

  1. Project : Show Ascii table

load "guilib.ring" load "stdlib.ring"

decarr = newlist(16,6) ascarr = newlist(16,6)

new qapp

       {
       win1 = new qwidget() {
                 setwindowtitle("Show Ascii table")
                 setgeometry(100,100,800,600)
                 for n = 1 to 16
                      for m = 1 to 6
                           decarr[n][m] = new qpushbutton(win1) {
                                                 x = 150+m*60
                                                 y = 30 + n*30
                                                 ind = string((m-1)*16+n+31)
                                                 setgeometry(x,y,30,30)
                                                 settext(ind)
                                                 }
                      next
                 next
                 for n = 1 to 16
                      for m = 1 to 6
                           ascarr[n][m] = new qpushbutton(win1) {
                                                 x = 180+m*60
                                                 y = 30 + n*30
                                                 ind = (m-1)*16+n+31
                                                 setgeometry(x,y,30,30)
                                                 if ind = 32
                                                    settext("Spc")
                                                    loop
                                                 ok
                                                 if ind = 127
                                                    settext("Del")
                                                    loop
                                                 ok
                                                 settext(char(ind))
                                                 }
                      next
                 next
                 show()
       }
       exec()
       }

</lang> Output:

Show Ascii table