Binary Magic Cards

-5

There's a cool magic trick that works using the power of binary. The effect of the trick is as follows:

  1. An audience member chooses some natural number in the range of 1 to x where x is chosen by the magician.

  2. The magician hands the audience member some special cards. Each card contains some numbers from 1 to x.

  3. The audience member selects the cards which contain their number.

  4. Almost instantly, the magician can determine the original number selected.


Specification:

The numbers used for the cards are determined based on binary place value. Each card is first labeled with a power of 2. The first card becomes 1, the second becomes 2, the third becomes 4, and so on.

From now on, I will refer to card n as the card labeled with n.

To determine whether a number k is on card n, determine whether k in binary has at 1 at place value n. Consider the numbers k=13 and n=4.

K in binary is 1101. The second digit (n=4) is 1, so k=13, n=4 is a valid combination.

Goal:

Given two natural numbers 0 < n < 128 and 0 < k < 128, determine whether n appears on card k. Any reasonable input and output is allowed. Standard loopholes are banned.

This is code-golf, so the fewest bytes wins.

Test cases

Julian Lachniet

Posted 2017-08-15T14:14:37.797

Reputation: 3 216

Question was closed 2017-08-15T15:15:55.277

4Better add the test cases directly here. – Mr. Xcoder – 2017-08-15T14:19:14.387

2Also, what is *determine whether k in binary has at 1 at place value n* supposed to mean? Did you mean that the character in the binary representation of k at index n is 1? – Mr. Xcoder – 2017-08-15T14:22:30.987

@Mr.Xcoder Probably "at" should be "a" but not sure. – Erik the Outgolfer – 2017-08-15T14:23:02.310

1Also, what did you mean by *The second digit (n=4)*. Did you refer to the fourth digit? I am not sure I understand. – Mr. Xcoder – 2017-08-15T14:25:35.800

@Mr.Xcoder No, binary place value 4. So like the 4-s digit. – HyperNeutrino – 2017-08-15T14:26:44.000

@HyperNeutrino I don't understand your comment either :P EDIT: I understood. The exponent of 2 such that we reach n (2^2 = 4)! – Mr. Xcoder – 2017-08-15T14:27:05.610

@Mr.Xcoder You know how we have 1s digits, 10s digits, 100s digits, etc? Same logic applies here – HyperNeutrino – 2017-08-15T14:28:25.423

1Does the truthy/falsy value have to be consistent? – Erik the Outgolfer – 2017-08-15T14:34:27.173

Why did you swap n and k at the end "determine whether n appears on card k"? – Jonathan Allan – 2017-08-15T14:37:48.157

It does not seem at all clear if the input is the binary place or the minimum number on the card (most people seem to be assuming the latter) - first you say "From now on, I will refer to card n as the card labeled with n" then immediately you say "determine whether k in binary has at 1 at place value n.". – Jonathan Allan – 2017-08-15T14:41:17.927

Why did you ask a question and put it on hold? Couldn't you simply delete it? – rahnema1 – 2017-08-15T15:27:24.307

@rahnema1 Only moderators can delete answered questions (when the answerers received reputation for it). This is common if you want to abandon the challenge. – Mr. Xcoder – 2017-08-15T15:58:21.797

Answers

4

Pyth, 5 bytes

._.&E

Try it here.

Notice the cute face ._.


How?

._.&EQ  -  Q means input and is implicit.

  .&    - Bitwise AND between:
    E     - The second input and
     Q    - The first input.
._      - Sign. 0 if it equals 0, 1 otherwise.

If inconsistent values are allowed:

Pyth, 3 bytes

No cute face this time ._.

.&E

Try it here.

Mr. Xcoder

Posted 2017-08-15T14:14:37.797

Reputation: 39 774

2+2 for cute face, -1 for removing it – IsThisJavascript – 2017-08-15T15:25:13.547

1

Jelly, 1 byte

&

Try it online!

Bitwise AND Builtin

HyperNeutrino

Posted 2017-08-15T14:14:37.797

Reputation: 26 575

After I have seen your comments, I am not sure enitrely you understood. binary place value is 0 for 1, 1 for 2, 2 for 4, 3 for 8 (2^binary_place_value = n). Is that what you do in your answer? – Mr. Xcoder – 2017-08-15T14:30:08.047

@Mr.Xcoder Now I am not entirely side I understand your comment :P I'm fairly sure this is correct since it checks if the 4s place is truthy, not if the 4th digit from the right is truthy. – HyperNeutrino – 2017-08-15T14:31:42.837

@Mr.Xcoder The 4s place is the place where it adds 4 if it's 1, so 2^2. 2^n = binary_place_value – Erik the Outgolfer – 2017-08-15T14:32:08.110

If this is the intended input, then certainly simply & will do since the range is [1,x] and "Any reasonable input and output is allowed." implies truthy/falsey is fine. – Jonathan Allan – 2017-08-15T14:46:21.730

@JonathanAllan Cool, thanks. – HyperNeutrino – 2017-08-15T14:47:45.283

0

Proton, 3 bytes

(&)

Try it online!

(Waiting for pull from TIO before it works on TIO but you can verify it by cloning the repository)

Functional operator of the Bitwise AND operator

HyperNeutrino

Posted 2017-08-15T14:14:37.797

Reputation: 26 575

0

05AB1E, 2 bytes

Try it online!

Erik the Outgolfer

Posted 2017-08-15T14:14:37.797

Reputation: 38 134