Positive decimal integers with the digit 1 occurring exactly twice: Difference between revisions
Content added Content deleted
(Created page with "{{Draft task}} ;Task:Find numbers '''n''' in which number '''1''' occur twice, where '''n < 1,000''' <br><br> =={{header|Ring}}== <lang ring> load "stdlib.ring" see "workin...") |
(Added Algol 68) |
||
Line 4: | Line 4: | ||
<br><br> |
<br><br> |
||
=={{header|ALGOL 68}}== |
|||
Generates the numbers. In order to print them in order, a table of double 1 numbers yes/no is generated. |
|||
<lang algol68>BEGIN # find numbers where the digit 1 occurs twice, up to 999 # |
|||
[ 1 : 999 ]BOOL double 1; FOR i TO UPB double 1 DO double 1[ i ] := FALSE OD; |
|||
# generte the numbers # |
|||
FOR i FROM 0 TO 9 DO |
|||
IF i /= 1 THEN |
|||
double 1[ 110 + i ] := TRUE; |
|||
double 1[ 101 + ( i * 10 ) ] := TRUE; |
|||
double 1[ ( i * 100 ) + 11 ] := TRUE |
|||
FI |
|||
OD; |
|||
# print the numbers in order # |
|||
INT double 1 count := 0; |
|||
FOR i TO UPB double 1 DO |
|||
IF double 1[ i ] THEN |
|||
print( ( " ", whole( i, -3 ) ) ); |
|||
IF ( double 1 count +:= 1 ) MOD 10 = 0 THEN print( ( newline ) ) FI |
|||
FI |
|||
OD |
|||
END</lang> |
|||
{{out}} |
|||
<pre> |
|||
11 101 110 112 113 114 115 116 117 118 |
|||
119 121 131 141 151 161 171 181 191 211 |
|||
311 411 511 611 711 811 911 |
|||
</pre> |
|||
=={{header|Ring}}== |
=={{header|Ring}}== |
Revision as of 11:35, 8 July 2021
Positive decimal integers with the digit 1 occurring exactly twice 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 numbers n in which number 1 occur twice, where n < 1,000
ALGOL 68
Generates the numbers. In order to print them in order, a table of double 1 numbers yes/no is generated. <lang algol68>BEGIN # find numbers where the digit 1 occurs twice, up to 999 #
[ 1 : 999 ]BOOL double 1; FOR i TO UPB double 1 DO double 1[ i ] := FALSE OD; # generte the numbers # FOR i FROM 0 TO 9 DO IF i /= 1 THEN double 1[ 110 + i ] := TRUE; double 1[ 101 + ( i * 10 ) ] := TRUE; double 1[ ( i * 100 ) + 11 ] := TRUE FI OD; # print the numbers in order # INT double 1 count := 0; FOR i TO UPB double 1 DO IF double 1[ i ] THEN print( ( " ", whole( i, -3 ) ) ); IF ( double 1 count +:= 1 ) MOD 10 = 0 THEN print( ( newline ) ) FI FI OD
END</lang>
- Output:
11 101 110 112 113 114 115 116 117 118 119 121 131 141 151 161 171 181 191 211 311 411 511 611 711 811 911
Ring
<lang ring> load "stdlib.ring" see "working..." + nl see "Numbers n in which number 1 occur twice:" + nl
row = 0 sum = 0 limit = 1000
for n = 1 to limit
strn = string(n) ind = count(strn,"1") if ind = 2 see "" + n + " " row = row + 1 if row%5 = 0 see nl ok ok
next
see nl + "Found " + row + " numbers" + nl see "done..." + nl
func count(cstring,dstring)
sum = 0 while substr(cstring,dstring) > 0 sum = sum + 1 cstring = substr(cstring,substr(cstring,dstring)+len(string(sum))) end return sum
</lang>
- Output:
working... Numbers n in which number 1 occur twice: 11 101 110 112 113 114 115 116 117 118 119 121 131 141 151 161 171 181 191 211 311 411 511 611 711 811 911 Found 27 numbers done...