Чи всі три цілі числа відрізняються?


14

Вам буде надано 3 цілі числа як вхідні дані. Вхідні дані можуть відрізнятися один від одного. Ви повинні вивести 1, якщо всі три входи відрізняються один від одного, і 0, якщо будь-який вхід повторюється більше одного разу.

Це , тому зробіть свій код якомога коротшим!


1
Ласкаво просимо до PPCG. Гарний перший виклик. Ми досить суворі щодо об'єктивних критеріїв виграшу на цьому сайті. Код-гольф, здається, є очевидним вибором тут, тому я додам це до вашого допису. Виправте мене, якщо я помиляюся.
Адам

1
Деякі тестові випадки були б непогані.
Адам

19
Хто бідував на всі відповіді, повинен хоча б пояснити, чому ...
Арнальд,

1
@ Adám Я думаю, що більш точним буде заголовок Чи всі три цілі числа відрізняються?
Арнольд

5
Мій голосовий голос - молоток, але можливий дублікат " Визначте, чи всі десяткові цифри унікальні " Трохи різні, але більшість відповідей все одно можна перенести.
Кевін Кройсейсен

Відповіді:


10

Python 3 , 23 21 20 байт

lambda*a:len({*a})>2

Спробуйте в Інтернеті!


ОП попросив 1 проти 0, тому, можливо, вам знадобиться ще один байт:lambda*a:len({*a})//3
tsh

@tsh в Python 1 == True, я думаю, що десь є метапост
Стівен,

1
@tsh - відповідна мета "якщо воно б'ється як число, це число" - в Python: False * Trueє 0; False + Trueє 1; тощо ...
Джонатан Аллан

З відповідної мета: "це не стосується викликів, коли потрібен точний вихід рядків", тому я не впевнений, що тут дійсно застосовується
GB


8

R , 13 байт

Інше рішення для @Kirill, використовуючи mad()непередбачувані цілі!

mad(scan())>0

Спробуйте в Інтернеті!


1
Вхідні колодязі взагалі не вказані, тому IMO, приймаючи 3 значення як введення, означає, що ми можемо прийняти вектор
digEmAll

2
R майже конкуруючи з мовами гольфу! : D
digEmAll

1
Я вважаю, що Гаусс винайшов madсаме для цієї мети.
ngm

5

R , 24 22 20 байт

all(table(scan())<2)

Спробуйте в Інтернеті!

Повертається булевим, але оскільки люди вже обговорювали відповідь на Python , це повинно бути нормально.

Завдяки digEmAll за збереження 2 байтів.



11 байт - якщо вам дозволено мати будь-яке число> 0 як truthey. В іншому випадку додайте >0для TRUE/FALSEвиведення в 13 байт.
J.Doe

1
Нічого собі, навіть не знали про цю функцію. Я б запропонував опублікувати його окремо (відредагувати та відновити видалену відповідь), але я думаю, що вам доведеться дотримуватися 13 байтів - тоді як T / F дійсно діє як 1/0, 1,48 не відповідає.
Кирило Л.

5

JavaScript, 22 байти

Якщо ми можемо вивести булеві значення, то останні 2 байти можна видалити.

a=>new Set(a).size>2&1

Спробуйте в Інтернеті

Для одного і того ж числа байтів, це працює на масивах будь-якого розміру, але припускає, що вхід ніколи не містить a, 0а вихід булевий.

a=>!a[new Set(a).size]

Спробуйте в Інтернеті


Припускаючи, що ми можемо взяти вхід як масив і повернути булеве значення:a=>new Set(a).size>2
Arnauld

@Arnauld, так, у мене це теж було, але, як він стоїть, специфікація цього не дозволить - буде оновлено, якщо специфікація зміниться.
Кудлатий

Зачекайте. Я можу просто застосувати &122 байти.
Кудлатий


4

Cubix , 55 25 байт

-29 завдяки Джо Кінгу

O@O1u|@O@II-!/;I-!/;u^?-p

Спробуйте в Інтернеті!

Потрібно мати можливість відіграти в гольф досить багато байтів.



Дуже дякую. Мені вдалося поголити ще 1 байт, щоб отримати загальний
Люк,

Я думаю, що ти можеш пропустити @місце .на 9-му місці. Змушує це робити кілька прикольних речей для 1 2 2.
MickyT

3

05AB1E , 2 байти

ÙQ

Спробуйте в Інтернеті або перевірте ще кілька справ .

Пояснення:

Ù     # Uniquify the (implicit) input
 Q    # Check if it's still equal to the (implicit) input

Використання стандартних правил truthy / falesy для вирішення проблеми , маючи на увазі, що 1це єдине значення truthy в 05AB1E, ¢Pпрацює також як альтернативний 2-байт.
Містер Xcoder

1
@ Mr.Xcoder Я не впевнений , що на насправді в даний час дійсно - питання задає для виходів 1 і 0 - 4, наприклад, не є ні , 1ні 0, ні не діє , як 1і 0(як Trueі Falseроблять в Python). Це питання, мабуть, слід задати Труті / Фолсі, але наразі це не так.
Джонатан Аллан

3

Математика, 13 байт

Boole[E!=##]&

Чиста функція. Приймає три цілі числа як вхідні дані та повернення 0або 1як вихідні. Я знаю, що це досить схоже на відповідь Девіда Г. Сторка , але він використовує SlotSequenceдля того, щоб стригти байт (порівняно з Boole@*Unequal).


3

мозковий ебать , 91 байт

,>,>,[-<-<->>]>>+++++++[>+++++++<-]+<<<<[>]>>[<<<[-<->]<[>]>>->[>.<<<->>-]<+]<+[>>>[>]<-.>]

Спробуйте в Інтернеті!

Як це працює

,>,>,                   'read input as A, B, and C
[-<-<->>]>>+            'compute A-C, B-C
++++++[>+++++++<-]+     'prepare output
<<<<[>]>>               'if A-C != 0 && B-C != 0
[
    <<<[-<->]           'compute A-B
    <[>]>>->            'if A-B != 0
    [>.<<<->>-]         'print 1
    <+
]
<+
[                       'else (this else is for both of the if statements, even though they are nested... wierd, I know)
    >>>[>]              
    <-.>                'print 0
]





2

Powershell, 27 25 байт

-2 байти дякую @AdmBorkBork

+!(($args|group).Count-3)

Тестовий сценарій:

$f = {
+!(($args|group).Count-3)
}

&$f 1 2 3
&$f 3 2 1
&$f 2 1 3
&$f 2 2 3
&$f 2 1 1
&$f 2 1 2

Пояснення:

    $args|group           # Group arguments
   (           ).Count    # Count of groups 
  (                   -3) # is 0 if inputed integers are unique
 !                        # operator not converts int to boolean: true if integers are unique
+                         # converts boolean to int: 1 if integers are unique, otherwise 0

1
26 байт -+(($args|group).count-eq3)
AdmBorkBork

чудово! і спасибі
mazzy






1

Java 9, 43 27 байт

завдяки @Olivier Grégoire

(a,b,c)->a!=b&b!=c&a!=c?1:0 

Попередня спроба:

(a)->a[0]==a[1]||a[0]==a[2]||a[1]==a[2]?0:1

1
Чому б не порахувати його як 43 байти
лише для ASCII,

1
27 байт : (a,b,c)->a!=b&b!=c&a!=c?1:0.
Олів'є Грегоар

Крім того, перший код (100 байт) не компілює і не використовує, ==що не застосовується Stringбез проблем, з якими ви стикаєтесь тут (після виправлення компіляції), а у другому коді Set.ofметод викине, IllegalArgumentExceptionякщо надається якийсь дублікат . Мені спокуса -1, щоб взагалі не тестувати.
Олів'є Грегоар

@olivier Вибачення - було пізно, і я переплутав кілька різних ідей у ​​голові. Щодо Set.of, я просто експериментував з перевагами Java 9, а сам Java 9 не мав. Я повинен був уважніше прочитати документацію, вибачте за це. Я відредагую, як тільки перейду на комп’ютер.
Квінтек


1

T-SQL, 39 байт

SELECT IIF(a=b OR b=c OR c=a,0,1)FROM s

Введення береться в вигляді окремих стовпців а, b, с з попередньо існуючої таблиці з , в відповідно з нашими стандартами IO .

Спробував варіацію, використовуючи COUNT DISTINCTдані, взяті як окремі рядки, але це було на пару байт довше.


1

Pyth, 3 байти

s{I

Вводиться як список.
Спробуйте тут

Пояснення

s{I
 {IQ     Check if the (implicit) input is invariant under deduplication.
s        Cast to int.

Якщо нам дозволено трактувати True та False як 1 і 0 (що вони знаходяться під кришкою в Pyth), ми можемо скинути цю точку, sщоб опуститися до 2 байтів.





1

q 14 bytes

{x~distinct x}

Technically this solution will return '1b' or '0b', which is the way a boolean value is distinguished from a numeric type, though it retains all arithmetic functionality, and so is in essence a 1 or 0:

q)1b +35
36

To return 1 or 0 non-boolean you have the below, which takes the byte count to 21

{$[x~distinct x;1;0]}

1
{1&/0N>':x?x}
ngn


1

Jelly, 5 6 bytes

ɠḲQL=3

Try it online!

From 5 to 6 bytes because this is my first time and I messed up (whoops) fixed it now

ɠḲQL=3
^^^^^
||||Is it equal to three?
|||How many unique numbers do we have? (length of unique numbers array)
||Sort By Unique
|Split by Spaces
Read Input

1
Hello and welcome to PPCG. Does your code also work for 3 integers, or is it only functional for three digits?
Jonathan Frech

@Jonathan Frech Sadly, it only works for three 1 Digit numbers, it does this by sorting the input by unique characters, then testing if the amount of unique characters is the same length as the input. Maybe there is a way to get it to work with any 3 integers, but I think this is a good attempt for me at least!
Kitten Hugger

2
The challenge specifies You will be given 3 integers as input. which seems to render your answer invalid.
Jonathan Frech

@JonathanFrech Fixed it now! Was my first time doing this sort of thing so, I'm not the greatest at it.
Kitten Hugger
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.