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

Fibonascii Squares

+4
−0

The Challenge

Your job is to, given input positive non-zero integer $n$, output an ASCII representation of the tiled Fibonacci squares up to the $n$th number of the Fibonacci sequence.

Rules

Input:

  • Input will be an integer $n$ such that $n \gt 0$.

Output:

  • Output will be an ASCII representation of the tiled Fibonacci squares, up until the $n$th Fibonacci number.

  • For Fibonacci number $x$, its respective square will be $x$ characters tall and $x$ characters wide.

  • Squares must be tiled so as to match the arrangement shown in the examples below. However, the output may be mirrored or rotated by multiples of $90^\circ$ as desired. The orientation may be changed based on the input.

  • This challenge does include $0$ as a member of the Fibonacci sequence, so bear that in mind.

  • For cases where $n$ is $1$ (and hence there aren't any squares to create), you may either output any number of whitespace characters or output nothing at all.

  • Each square in the output must be represented by a grid made up of a unique ASCII character. For the characters forming your squares, you may use either the alphabet (either uppercase or lowercase, starting at a) or the digits 0-9 (starting at 0). You may reuse characters once you reach the end of the character sequence. You must use at least five unique characters.

  • This is a code-golf challenge, so the code with the fewest bytes wins!

Examples

Here is an image of the proper way to tile Fibonacci squares:

Fibonacci square arrangement.

Image source: Wikipedia

Example 1

Input:
6
Output:
DDDCC
DDDCC
DDDAB
EEEEE
EEEEE
EEEEE
EEEEE
EEEEE

Explanation: The input is $5$, representing the first $5$ numbers of the Fibonacci sequence, which are $0$, $1$, $1$, $2$, $3$, and $5$. The first and second squares are $1 \times 1$ characters in size, and are represented by A and B, respectively. The third square is $2 \times 2$ characters in size, and is represented by C, and so on until we reach the fifth square.

Example 2

Input:
1
Output:

Explanation: The input is $1$, representing the first number of the Fibonacci sequence, which is $0$. Thus, nothing is outputted. Alternatively, any number of whitespace characters could be outputted.

Example 3

Input:
3
Output:
AB

Explanation: The input is $3$, representing the first $3$ numbers of the Fibonacci sequence, which are $0$, $1$, and $1$. Thus, we have two squares, each $1 \times 1$ characters in size. The first square is represented by A, the second by B.

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

2 comment threads

potentially wrong example (3 comments)
Varying rotation depending on input value (3 comments)

2 answers

You are accessing this answer with a direct link, so it's being shown above all other answers regardless of its score. You can return to the normal view.

+2
−0

BQN, 37 bytes

⍉∘⌽∘∾˜´(⍉{1⊸⌈⊸⋈⊑+`∘⌽⍟𝕩↕2}⥊'@'⊸+)¨∘⌽∘↕

-3 thanks to dzaima

The output isn't the same as the example but I think it's still correct if I understand the challenge correctly.

Result for x = 7:

FFFFFFFFEEEEE  
FFFFFFFFEEEEE  
FFFFFFFFEEEEE  
FFFFFFFFEEEEE  
FFFFFFFFEEEEE  
FFFFFFFFBADDD  
FFFFFFFFCCDDD  
FFFFFFFFCCDDD
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

+2
−0

BQN, 29 28 bytes

(⍉≍""){⍉⌽𝕩∾˘𝕨⥊˜⋈˜≠𝕩}´⟜⌽'@'+↕

Try it here!

Explanation:

(⍉≍""){⍉⌽𝕩∾˘𝕨⥊˜⋈˜≠𝕩}´⟜⌽'@'+↕  # a function taking a single argument
 ⍉≍""                         # a 0-by-1 matrix
(⍉≍""){            }´         # right fold with the initial value of the 0-by-1 matrix
                     ⟜⌽       #   (but reverse the list to make it a left fold)
                           ↕  # range; 0 1 2 3 4 … input-1
                       '@'+   # plus the character '@'; "@ABCDEF…"

      {⍉⌽𝕩∾˘𝕨⥊˜⋈˜≠𝕩}          # fold operand: 𝕨 - current character, 𝕩 - accumulator - the matrix
                 ≠𝕩           # numbers of rows in the matrix
               ⋈˜             # paired with itself (7 → [7,7])
            𝕨⥊˜               # reshape 𝕨 that much
         𝕩∾˘                  # concatenate horizontally to 𝕩
       ⍉⌽                     # rotate 90° clockwise (reverse vertically, transpose)
History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

0 comment threads

Sign up to answer this question »