Numbers in base-16 representation that cannot be written with decimal digits: Difference between revisions

From Rosetta Code
Content added Content deleted
m (added base ten to the task's requirement for the decimal limit.)
(→‎{{header|REXX}}: added the computer programming language REXX.)
Line 37: Line 37:


42 such numbers found.
42 such numbers found.
</pre>

=={{header|REXX}}==
<lang rexx>/*REXX pgm finds positive integers when shown in hex that can't be written with dec digs*/
parse arg n cols . /*obtain optional argument from the CL.*/
if n=='' | n=="," then n = 500 /*Not specified? Then use the default.*/
if cols=='' | cols=="," then cols= 10 /* " " " " " " */
w= 10 /*width of a number in any column. */
title= " positive integers when shown in hexadecimal that can't be written with" ,
'decimal digits, where N < ' n
say ' index │'center(title, 1 + cols*(w+1) ) /*display the title for the output. */
say '───────┼'center("" , 1 + cols*(w+1), '─') /* " a sep " " " */
found= 0; y= 0123456789; idx= 1 /*define a set of forbidden glyphs. */
$= /*list of numbers found (so far). */
do j=1 for n-1 /*find ints in hex with no dec. digits.*/
if verify(y, d2x(j), 'M')\==0 then iterate /*Any dec. digs in hex number? Skip. */ /* ◄■■■■■■■■ the filter. */
found= found + 1 /*bump number of found such numbers. */
$= $ right(j, w) /*add the found number ───► $ list. */
if found // cols \== 0 then iterate /*have we populated a line of output? */
say center(idx, 7)'│' substr($, 2); $= /*display what we have so far (cols). */
idx= idx + cols /*bump the index count for the output*/
end /*j*/

if $\=='' then say center(idx, 7)"│" substr($, 2) /*possible display residual output.*/
say '───────┴'center("" , 1 + cols*(w+1), '─') /*display the foot sep for output. */
say
say 'Found ' found title
exit 0 /*stick a fork in it, we're all done. */</lang>
output
<pre>
index │ positive integers when shown in hexadecimal that can't be written with decimal digits, where N < 500
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 10 11 12 13 14 15 170 171 172 173
11 │ 174 175 186 187 188 189 190 191 202 203
21 │ 204 205 206 207 218 219 220 221 222 223
31 │ 234 235 236 237 238 239 250 251 252 253
41 │ 254 255
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────

Found 42 positive integers when shown in hexadecimal that can't be written with decimal digits, where N < 500
</pre>
</pre>



Revision as of 10:35, 24 June 2021

Numbers in base-16 representation that cannot be written with decimal digits 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

Find positive integers in base-16 representation that cannot be written with decimal digits,   where   n   <   50010

Go

<lang go>package main

import (

   "fmt"
   "strconv"
   "strings"

)

func main() {

   const decimal = "0123456789"
   c := 0
   for i := int64(0); i < 500; i++ {
       hex := strconv.FormatInt(i, 16)
       if !strings.ContainsAny(decimal, hex) {
           fmt.Printf("%3d ", i)
           c++
           if c%14 == 0 {
               fmt.Println()
           }
       }
   }
   fmt.Printf("\n%d such numbers found.\n", c)

}</lang>

Output:
 10  11  12  13  14  15 170 171 172 173 174 175 186 187 
188 189 190 191 202 203 204 205 206 207 218 219 220 221 
222 223 234 235 236 237 238 239 250 251 252 253 254 255 

42 such numbers found.

REXX

<lang rexx>/*REXX pgm finds positive integers when shown in hex that can't be written with dec digs*/ parse arg n cols . /*obtain optional argument from the CL.*/ if n== | n=="," then n = 500 /*Not specified? Then use the default.*/ if cols== | cols=="," then cols= 10 /* " " " " " " */ w= 10 /*width of a number in any column. */ title= " positive integers when shown in hexadecimal that can't be written with" ,

      'decimal digits,  where  N  < '    n

say ' index │'center(title, 1 + cols*(w+1) ) /*display the title for the output. */ say '───────┼'center("" , 1 + cols*(w+1), '─') /* " a sep " " " */ found= 0; y= 0123456789; idx= 1 /*define a set of forbidden glyphs. */ $= /*list of numbers found (so far). */

   do j=1  for n-1                              /*find ints in hex with no dec. digits.*/
   if verify(y, d2x(j), 'M')\==0  then iterate  /*Any dec. digs in hex number?   Skip. */    /* ◄■■■■■■■■ the filter. */
   found= found + 1                             /*bump number of found such numbers.   */
   $= $  right(j, w)                            /*add the found number  ───►  $  list. */
   if found // cols \== 0        then iterate   /*have we populated a line of output?  */
   say center(idx, 7)'│'  substr($, 2);   $=    /*display what we have so far  (cols). */
   idx= idx + cols                              /*bump the  index  count for the output*/
   end   /*j*/

if $\== then say center(idx, 7)"│" substr($, 2) /*possible display residual output.*/ say '───────┴'center("" , 1 + cols*(w+1), '─') /*display the foot sep for output. */ say say 'Found ' found title exit 0 /*stick a fork in it, we're all done. */</lang> output

 index │    positive integers when shown in hexadecimal that can't be written with decimal digits,  where  N  <  500
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │         10         11         12         13         14         15        170        171        172        173
  11   │        174        175        186        187        188        189        190        191        202        203
  21   │        204        205        206        207        218        219        220        221        222        223
  31   │        234        235        236        237        238        239        250        251        252        253
  41   │        254        255
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────

Found  42  positive integers when shown in hexadecimal that can't be written with decimal digits,  where  N  <  500

Ring

<lang ring> see "working..." + nl see "Numbers in base-16 representation that cannot be written with decimal digits:" + nl

row = 0 baseList = "ABCDEF" limit = 500

for n = 1 to limit

   flag = 1  
   hex = upper(hex(n))
   for m = 1 to len(hex)
       ind = substr(baseList,hex[m])
       if ind < 1
          flag = 0
          exit
       ok
   next
    
   if flag = 1
      see "" + n + " "
      row = row + 1
      if row%5 = 0
         see nl
      ok
   ok

next

see nl + "Found " + row + " numbers" + nl see "done..." + nl </lang>

Output:
working...
Numbers in base-16 representation that cannot be written with decimal digits:
10 11 12 13 14 
15 170 171 172 173 
174 175 186 187 188 
189 190 191 202 203 
204 205 206 207 218 
219 220 221 222 223 
234 235 236 237 238 
239 250 251 252 253 
254 255 
Found 42 numbers
done...

Wren

Library: Wren-fmt

<lang ecmascript>import "/fmt" for Conv, Fmt

var decimal = "0123456789" var c = 0 for (i in 0..499) {

   var hex = Conv.hex(i)
   if (!hex.any { |c| decimal.contains(c) }) {
       Fmt.write("$3s ", i)
       c = c + 1
       if (c % 14 == 0) System.print()
   }

} System.print("\n%(c) such numbers found.")</lang>

Output:
 10  11  12  13  14  15 170 171 172 173 174 175 186 187 
188 189 190 191 202 203 204 205 206 207 218 219 220 221 
222 223 234 235 236 237 238 239 250 251 252 253 254 255 

42 such numbers found.