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

Comments on Fibonascii Squares

Post

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)
Varying rotation depending on input value
trichoplax‭ wrote 6 months ago · edited 6 months ago

A question about the output rules that didn't occur to me in the sandbox:

However, the output may be mirrored or rotated by multiples of $90^\circ$ as desired.

If I pick a particular rotation, do I need to use the same rotation for every input, or can I choose different rotations for different inputs?

For example, if I want the output to always be in portrait orientation (shortest side at the top), is this acceptable?

This is not a request for it to be one way or the other, just for the output rule to specify which is the case.

trichoplax‭ wrote 6 months ago

Example of what I was thinking might be easier to golf (for some approaches):

Input 1:

A

Input 2:

A
B

Input 3:

CC
CC
AB

Input 4:

DDD
DDD
DDD
ACC
BCC

Input 5:

EEEEE
EEEEE
EEEEE
EEEEE
EEEEE
BADDD
CCDDD
CCDDD
Sylvester‭ wrote 6 months ago

Hmmm, I don't really see anything against this, so I'll make it allowed. It seems to me like adding code to support multiple different orientations would hurt one's byte score, but then, I'm not an expert in golfing languages :P