В начальной школе дети узнают о правильных дробях, где числитель меньше знаменателя, и, следовательно, значение дроби меньше единицы. Позже им рассказывают о дробях, в которых значение дроби больше единицы, и двух разных способах выражения этих дробей: смешанные дроби и неправильные дроби.
Для заданной смешанной дроби определите, эквивалентна ли она неправильной дроби, в которой целочисленное значение и числитель объединены вместе. Например, для ввода 1 3/4
неправильная дробь равна 13/4
.
Тестовые случаи
1 3/4 -> falsey
1 3/10 -> truthy
6 6/7 -> falsey
55 55/100 -> truthy
4 9/100 -> falsey
40 9/100 -> falsey
7 49/1000 -> falsey
9 1/2 -> falsey
999 999/1000 -> truthy
1 21/200 -> falsey
1 21/101 -> falsey
Для ввода вы можете принимать целочисленную часть и дробную часть как отдельные входные данные, но вы не можете принимать дробную часть как входные данные из двух частей и не можете принимать ее как десятичное значение. Вы можете отбросить целочисленную часть (не принимать ее в качестве входных данных), если вам не нужно ее использовать.
54/100
упрощается27/50
55/100
это также может быть упрощено11/20
, таким образом, тот же самый вопрос @JoKing возникает там./
делает: /Ответы:
MATL , 7 байт
Ввод - это строка. Выход
1
для правды,0
для фальси.Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
Perl 6 ,
1612 байтПопробуйте онлайн!
Принимает ввод в виде строки, представляющей дробь. Оказывается, динамическая типизация Perl 6 может обрабатывать строки в рациональные дроби, кто знает? Таким образом, строка, приведенная
"1/10"
к числу, возвращает0.1
Блок анонимного кода просто проверяет, равна ли дробь плюс единица одному, объединенному с дробью. Спасибо ответу Python от xnor, который показал мне, что целочисленная часть не имеет значения.
Старое решение,
2726 байтПопробуйте онлайн!
Принимает ввод как рациональную смешанную дробь и возвращает истину или ложь. Возвращает false для четвертого контрольного примера, поскольку его можно упростить.
Объяснение:
.nude
возвращает список[numerator, denominator]
.источник
.nude
он назван в честь nu merator + de nominator, но кто-то, вероятно, получил огромное удовольствие от возможности назвать это так.'1 3/10'
{S/\s//==.words.sum}
Сетчатка 0.8.2 ,
1716 байтПопробуйте онлайн! Требуется только часть дроби, поэтому связанный набор тестов удаляет целое число из тестовых случаев. Объяснение: Неправильная конкатенация равна смешанному числу, только если знаменатель имеет степень 10, а числитель имеет одну цифру на каждый ноль в знаменателе. Балансирующие группы .NET используются для проверки наличия достаточных цифр. Редактировать: 1 байт сохранен благодаря @sundar.
источник
1 11/10
. Кажется, это проблема вашей реализации, а не метода^
вместо этого, таким образом, это не помогает./
делает однозначным то, что вы сопоставляете, поэтому я не думаю, что вам нужен там якорь (по обычным правилам сопоставления регулярных выражений, здесь нет опыта Retina). Кажется, все равно работает: попробуйте онлайн! ,Шелуха , 8 байт
Попробуйте онлайн!
объяснение
источник
Python 2 , 43 байта
Попробуйте онлайн!
источник
R ,
7865 байтПопробуйте онлайн!
-13 байтов благодаря Джузеппе и ДжейСе!
источник
sub
здесь хорошо. Кроме того, вы можете использоватьt=
вместоtext=
Stax , 5 байт
Запустите и отладьте его
Объяснение:
источник
Python 3 , 26 байт
Попробуйте онлайн!
Например, ввод
3/4
дает3/4+1==13/4
. Вместо того, чтобы брать целую часть дроби, мы просто устанавливаем ее1
для проверки равенства смешанной дроби. Тестовые случаи от Chas Brown.источник
Брахилог , 15 байт
Попробуйте онлайн!
Принимает дробную часть в качестве строкового ввода.
Косвенно использует ту же идею, что и мой ответ Юлии - «знаменатель равен 10 ^ {длина числителя}» можно сказать как «знаменатель - это степень десяти, а длина знаменателя равна длине числителя + длина "/" (то есть 1).
Старый ответ:
1520 байтПопробуйте онлайн!
(-1 байт благодаря @Fatalize, но, к сожалению, +6 байт, так как я обнаружил ошибки в старом методе.)
Та же идея, что и у моего Джулии .
источник
A
выходной переменной.
(и, таким образом, удалите последнюю,A
потому что выходная переменная неявно присутствует в конце)61/10
(используя только 6 в качестве числителя / префикса)2/110
(используя только 10 в качестве знаменателя / суффикса). Я пытался это исправить, но не уверен, что это лучший способ сделать это.Юлия 0,6 , 29 байт
Попробуйте онлайн!
Основываясь на идее, что результат должен быть истинным только тогда, когда знаменатель представляет собой степень десяти с числом нулей, равным количеству цифр в числителе. Принимает ввод как
Rational
тип, проверяет, что знаменатель равен 10, поднятому в число цифр в числителе.источник
чистый , 57 байт
Попробуйте онлайн!
Этот немного короче, но ломается для больших числителей / знаменателей.
Чистый ,
77616058 байт-1 спасибо подсказке OMᗺ на мой другой ответ
Попробуйте онлайн!
Это использует метод Нейла , это немного короче, чем делать это напрямую.
Есть некоторая хитрость с перегрузкой преобразования, где
1<+[48\\_<-:u]
конвертирует[Int]
в[Char]
и затем в{#Char} (:== String)
, ноInt
непосредственно вString
.Чисто ,
9189 байтПопробуйте онлайн!
Определяет функцию,
$ :: String String -> Bool
которая извлекает числитель и знаменатель, объединяет в строку целочисленную часть и числитель и проверяет эквивалентность.источник
05AB1E , 7 байтов
Только принимает фракции в качестве входных данных.
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Или более общее объяснение:
Мы должны подтвердить две вещи:
1, 10, 100, 1000
и т. Д.)?PS: Если бы мы могли взять числитель и знаменатель в виде отдельных входов, всего 3 байта было бы достаточно:
g°Q
.источник
JavaScript, 26 байт
Принимает ввод в карринг-синтаксисе (
f(x)(y)
), гдеx
является целым числом иy
дробью в виде строки.Попробуйте онлайн
источник
Java 10,
107706757 байтДобро пожаловать в мир без
eval
..-40 байт, создав порт ответа @ChasBrown 's Python 2 .
-10 байт благодаря @Shaggy (мне следовало бы лучше прочитать ответ @ChasBrown и его использование
find
(indexOf
) ..)Попробуйте онлайн.
Объяснение:
источник
Haskell ,
4740 байт-7 благодаря OMᗺ
Попробуйте онлайн!
Порт моего Чистого ответа с использованием метода Нейла.
источник
Perl 5 -p, 23 байта
Попробуйте онлайн!
Принимает только дробную часть в качестве входных данных (как разрешено OP), выводит 1 для true и ничего для false.
Десятичная часть, взятая сама по себе, будет в точности равна числителю, только если знаменатель на следующую десятую степень больше нумератора, что является условием, которое мы должны проверить.
источник
Нетер, 17 байт
Попробуйте онлайн!
объяснение
источник
TeaScript , 25 байтов
Первый вход - это дробь, второй - целое число.
Я только начал в TeaScript, так что это может быть много
Попробуйте онлайн!
источник
R , 53 байта
Попробуйте онлайн!
Принимает только дробную часть в качестве ввода. Как упомянуто xnor в комментарии:
Ответ Роберта С. не такой уж гольфистский, но гораздо интереснее моего.
источник
C (gcc) ,
675655 байтовПопробуйте онлайн!
источник
r
? tio.run/...Excel, 52 байта
Игнорирует целочисленный ввод. В принципе:
IS Denominator = 10^LEN(Numerator)
Для знаменателей ограничено
<10^9
: 48 байтов:Основная часть логики разделяется на
/
. Если вход может быть взят отдельно, 16 байтов:источник
Эликсир , 81 байт
Попробуйте онлайн!
Может быть в состоянии получить где-то с
{n,"/"<>d}=Integer.parse b
, но не уверен, как.источник
2DFuck , 86 байт
Попробуйте онлайн!
Принимает ввод без целочисленной части.
источник
C (gcc / clang),
594947 байтПорт Часа Брауна Python 2 ответ . Попробуйте это онлайн здесь .
Игнорирует целочисленную часть ввода. Спасибо Джонатану Фречу за игру в гольф 2 байта.
Ungolfed:
источник
'/'
скорее всего может быть47
.ForceLang,
8678 байтисточник