|
|
A134808
|
|
Cyclops numbers.
|
|
42
|
|
|
0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206, 207, 208, 209, 301, 302, 303, 304, 305, 306, 307, 308, 309, 401, 402, 403, 404, 405, 406, 407, 408, 409, 501, 502, 503, 504, 505, 506, 507, 508, 509, 601, 602, 603, 604, 605, 606
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
1,2
|
|
COMMENTS
|
Numbers with middle digit 0, that have only one digit 0, and the total number of digits is odd; the digit 0 represents the eye of a cyclops.
|
|
LINKS
|
|
|
EXAMPLE
|
109 is a cyclops number because 109 has only one digit 0 and this 0 is the middle digit.
|
|
MATHEMATICA
|
cyclopsQ[n_Integer, b_:10] := Module[{digitList = IntegerDigits[n, b], len, pos0s, flag}, len = Length[digitList]; pos0s = Select[Range[len], digitList[[#]] == 0 &]; flag = OddQ[len] && (Length[pos0s] == 1) && (pos0s == {(len + 1)/2}); Return[flag]]; Select[Range[0, 999], cyclopsQ] (* Alonso del Arte, Dec 16 2010 *)
Reap[Do[id=IntegerDigits[n]; If[Position[id, 0]=={{(Length[id]+1)/2}}, Sow[n]], {n, 0, 10^3}]][[2, 1]] (* Zak Seidov, Dec 17 2010 *)
cycQ[n_]:=Module[{idn=IntegerDigits[n], len=IntegerLength[n]}, OddQ[len] && DigitCount[ n, 10, 0]==1&&idn[[(len+1)/2]]==0]; Join[{0}, Select[Range[ 0, 700], cycQ]] (* Harvey P. Dale, Mar 07 2020 *)
|
|
PROG
|
(Sage)
def is_cyclops(n, base=10):
dg = n.digits(base) if n > 0 else [0]
return len(dg) % 2 == 1 and dg[len(dg)//2] == 0 and dg.count(0) == 1
is_A134808 = lambda n: is_cyclops(n)
(PARI) a(n, {base=10}) = my (l=0); my (r=n-1); while (r >= (base-1)^(2*l), r -= (base-1)^(2*l); l++); return (base^(l+1) * ( (base^l-1)/(base-1) + if (base>2, fromdigits(digits(r \ ((base-1)^l), (base-1)), base)) ) + ( (base^l-1)/(base-1) + if (base>2, fromdigits(digits(r % ((base-1)^l), (base-1)), base)))) \\ Rémy Sigrist, Apr 29 2017
(Python)
from itertools import product
def cyclops(upto=float('inf'), upton=float('inf')): # generator
yield 0
c, n, half_digits, pow10 = 0, 1, 0, 10
while 100**(half_digits+1) < upto and n < upton:
half_digits += 1
pow10 *= 10
for left in product("123456789", repeat=half_digits):
left_plus_eye = int("".join(left))*pow10
for right in product("123456789", repeat=half_digits):
c, n = left_plus_eye + int("".join(right)), n+1
if c <= upto and n <= upton: yield c
print([c for c in cyclops(upto=606)])
|
|
CROSSREFS
|
|
|
KEYWORD
|
base,easy,nonn
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|