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
Vincenzo Librandi, Table of n, a(n) for n = 1..1000
Brady Haran and Simon Pampena, Glitch Primes and Cyclops Numbers, Numberphile video (2015).
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)
# D. S. McNeil, Dec 17 2010
(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)])
print([c for c in cyclops(upton=52)]) # Michael S. Branicky, Jan 05 2021
CROSSREFS
KEYWORD
base,easy,nonn
AUTHOR
Omar E. Pol, Nov 21 2007
STATUS
approved