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
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
Challenges

8 coexisting queens

+2
−0

This is a fixed output challenge. Output a textual representation of a chessboard hosting 8 queens, none of which are attacking each other.

There are 92 ways of arranging them, 12 if rotations and reflections are discounted. You may choose any 1 of these arrangements.

You are not required to calculate or search for a valid arrangement. Hardcoding your choice of arrangement is one possible valid solution.

Input

  • There is no input for this challenge

Output

  • 8 newline separated lines of 8 characters, with an optional trailing newline
  • Each character is either a queen or an empty square. You may choose any two distinct characters to represent a queen and an empty square
  • No more than 1 queen appears in each row, column, and diagonal
  • There are 8 queens in total
  • Your output must be the same each time (your code must have deterministic output, even if it uses a probabilistic approach internally)

Examples

The examples show a queen as Q and an empty square as #. There are 12 examples, one for each of the fundamental solutions (before rotation and reflection). Any combination of rotating and reflecting one of these examples is also a valid solution.

###Q####
######Q#
##Q#####
#######Q
#Q######
####Q###
Q#######
#####Q##

####Q###
#Q######
###Q####
######Q#
##Q#####
#######Q
#####Q##
Q#######

###Q####
#Q######
######Q#
##Q#####
#####Q##
#######Q
####Q###
Q#######

###Q####
#####Q##
#######Q
##Q#####
Q#######
######Q#
####Q###
#Q######

##Q#####
#####Q##
#######Q
Q#######
###Q####
######Q#
####Q###
#Q######

####Q###
##Q#####
#######Q
###Q####
######Q#
Q#######
#####Q##
#Q######

####Q###
######Q#
###Q####
Q#######
##Q#####
#######Q
#####Q##
#Q######

###Q####
Q#######
####Q###
#######Q
#####Q##
##Q#####
######Q#
#Q######

##Q#####
#####Q##
###Q####
Q#######
#######Q
####Q###
######Q#
#Q######

#####Q##
#Q######
######Q#
Q#######
###Q####
#######Q
####Q###
##Q#####

###Q####
######Q#
Q#######
#######Q
####Q###
#Q######
#####Q##
##Q#####

#####Q##
###Q####
######Q#
Q#######
#######Q
#Q######
####Q###
##Q#####

The 12 fundamental solutions were taken from the Wikipedia page for the 8 queens puzzle which also provides them as images:

The 12 fundamental solutions to the 8 queens puzzle

Scoring

Despite there being 92 valid outputs, this is a standard code golf challenge. Your score is the number of bytes in your code.

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

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

5 answers

+3
−0

JavaScript, 48 bytes

_=>[..."41506372"].map(x=>1e8/9+10**x|0).join`
`

Try it online!

The string "41506372" encodes the position of the queen in each row.

1e8/9 gives 11111111.1111..., and adding 10x changes a digit from 1 to 2 at position x.

The bitwise operation is a short way to cause a conversion to integer, removing the fractional part, and finally, join inserts line feeds in between the numbers.

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

0 comment threads

+2
−0

Japt -R, 16 15 bytes

Uses spaces for #s and "s for Qs.

##Ë64ì £QùXÄÃy

Test it (footer reformats the output to use the characters from the spec)


This one uses 1s for #s.

##Ë64ì £#ÿ¤hXQ

Test it (footer as above)


##Ë64ì £QùXÄÃy
##Ë64              :15720364
      ì             :To digit array
        £           :Map each X
         Q          :  Quotation mark
          ù         :  Left pad with spaces to length
           XÄ       :    X+1
             Ã      :End map
              y     :Transpose (which pads with spaces)
                    :Implicit output joined with newlines
##Ë64ì £#ÿ¤hXQ
##Ë64ì £           :As above
         #ÿ         :  255
           ¤        :  To binary string
            hXQ     :  Replace the character at index X with "

"But, Shaggy, why ... no, how is that 15720364?" "Glad you asked! See this tip here"

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

0 comment threads

+1
−0

x86-64 machine code, 27 bytes

6A D7 58 99 B1 10 48 D3 C0 48 AB C6 07 0A AE 80 C1 48 73 F2 FF C2 74 EC 88 37 C3

Try it online!

Following the standard calling convention for Unix-like systems (from the System V AMD64 ABI), this takes in RDI a memory address at which to place the result, as a null-terminated byte string in ISO-8859-1.

In assembly:

f:	push -41; pop rax   # Set RAX to -41: low byte 0xD7, other bytes 0xFF.
	cdq                 # Set EDX to -1 by sign-extending EAX.
r4:	mov cl, 0b00010000  # Set CL to 2*8.
r:	rol rax, cl         # Rotate RAX left by the value of CL.
	    # CL will always be a multiple of 8; this moves the 0xD7 byte.
	stosq               # Write RAX to the string, advancing the pointer.
	mov [rdi], '\n'     # Add a line feed to the string.
	scasb               # Advance past it while comparing it with AL.
	add cl, 0b01001000  # Add 1*8+64 to CL.
	jnc r               # Jump if no carry; iterate 4 times.
	inc edx             # Add 1 to EDX.
	jz r4               # Jump (here resetting CL) if it's 0.
	mov [rdi], dl       # Add a 0 byte from DL to the string.
	ret                 # Return.

The output is:

ÿÿ×ÿÿÿÿÿ
ÿÿÿÿÿ×ÿÿ
ÿ×ÿÿÿÿÿÿ
ÿÿÿÿÿÿ×ÿ
×ÿÿÿÿÿÿÿ
ÿÿÿ×ÿÿÿÿ
ÿÿÿÿÿÿÿ×
ÿÿÿÿ×ÿÿÿ

This solution was chosen for the pattern formed by the horizontal offsets between queen positions in adjacent rows, wrapping around and starting at 0; those offsets are 2, 3, 4, 5, 2, 3, 4, 5.

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

0 comment threads

+1
−0

Vyxal, 9 bytes

×»∇ḂẆ»f꘍§

Try it Online!

Uses spaces for empty and asterisks for queen. Add a at the end to replace spaces with zeros.

×»∇ḂẆ»f꘍§
 »∇ḂẆ»f   # 13572064 as a list of digits
×      ꘍  # For each, prepend that many spaces to an asterisk
        § # Vertical join: transpose filling with spaces, and join on newlines
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+1
−0

J, 20 bytes

'01'{~#:2^2842 A.i.8

Attempt This Online!

Non-tacit program that outputs implicitly in a REPL. Shoutout to Raul (Miller)#5220 in the APL farm discord for thinking of this cool idea.

          2842 A.i.8  : Anagram 2842 of 0..8 -> 0 4 7 5 2 6 1 3
        2^            : Raise 2 to each value
      #:              : Create matrix of each binary conversion
'01'{~                : Index '01' using each value of the result
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 »

This community is part of the Codidact network. We have other communities too — take a look!

You can also join us in chat!

Want to advertise this community? Use our templates!

Like what we're doing? Support us! Donate