Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Challenges

Fibonacci without consecutive digits

+2
−1

Output the Nth number in the list of Fibonacci numbers that have no consecutive digits.

Input

  • A non-negative integer.

Output

  • The Nth number in the list of Fibonacci numbers whose base 10 (decimal) representation has no adjacent digits that are consecutive.
  • The Fibonacci numbers start with 0 and 1, then each subsequent Fibonacci number is the sum of the previous two Fibonacci numbers.
  • The Fibonacci numbers are zero indexed:
    • For input 0, the output is 0.
    • For input 1, the output is 1.
  • Two digits are consecutive if their absolute difference is 1.
  • The consecutive digits can be in either ascending or descending order - either will lead to exclusion from the list.

Examples

Single digit Fibonacci numbers

  • A single digit number has no adjacent digits, so all single digit Fibonacci numbers are included.

Two digit Fibonacci numbers

  • 34 and 89 are excluded because their digits are consecutive.
  • 21 is also excluded due to consecutive digits in descending order.

Non-adjacent consecutive digits

  • 46368 contains the digits 4 and 3, which are consecutive digits. However, they are not adjacent (being separated by a 6) so 46368 is included.

Test cases

Test cases are in the format input : output.

0 : 0
1 : 1
2 : 1
3 : 2
4 : 3
5 : 5
6 : 8
7 : 13
8 : 55
9 : 144
10 : 377
11 : 1597
12 : 2584
13 : 4181
14 : 17711
15 : 46368
16 : 75025
17 : 196418
18 : 514229
19 : 14930352
20 : 39088169

Scoring

This is a code golf challenge. Your score is the number of bytes in your code. Lowest score for each language wins.

Explanations are optional, but I'm more likely to upvote answers that have one.

History
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

2 answers

+1
−0

Pyth, 25 23 bytes

@f-1aM.:jT;2u+Gs>2GyQU2

Try it online!

First, we generate the Fibonacci numbers:

u+Gs>2GyQU2
         U2    range(2), the list [0, 1]
u              Apply the following function iteratively,
               returning the final result.
 +G            Add to the end of the current list
   s>2G        The sum of the last two elements of the current list
       yQ      Repeat for twice the input number of repetitions

Next, we check for consecutive digits.

@f-1aM.:jT;2
 f              Filter on the following function
        jT;     Take the base ten representation of the number.
                ; accesses T's value in the external scope.
      .:   2    Take all pairs of digits.
    aM          Map pairs to their absolute difference.
  -1            Check if 1 is not among the differences.
@               Index the filter result at the input position.
History
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+1
−0

Python 3, 149 bytes

g=lambda r:r>1and g(r-1)+g(r-2)or r
lambda n:[i for(i)in map(g,range(2*n+2))if(lambda*l:all(abs(n-i)!=1for(n,i)in zip(l,l[1:])))(*map(int,str(i)))][n]

Try it online!

Based on @isaacg‭'s idea of mapping to twice the input, I had a similar thought, but I wasn't sure about the growth rate of the non-adjacent sequence...

Here's a mashed up version of my previous attempt:

j=n
while len(l:=[*filter(lambda*l:all(abs(n-i)!=1for(n,i)in zip(l,l[1:])),[*map(lambda i:[*map(int,str(i))],map(g,range(j:=j+1)))])])<n+1:0
print(l[:-1])
History
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

Sign up to answer this question »