Я делал кодовый гольф (используйте минимальное количество символов), и у меня было следующее рабочее решение Python. Я пытался сократить свой код, переписав его на Ruby, но мой код Ruby всегда печатал false.

Код должен был прочитать две строки, игнорировать регистр и сказать, можно ли получить одну строку, вращая другую строку. Результат должен быть либо true, либо false. Вы хоть представляете, что я сделал не так в Ruby?

Python 3 (64 символа) - Работает

a=input().lower()
b=input().lower()
print(str(a in 2*b).lower())

Рубин (47 символов) - всегда печатает «ложь»

a=gets.upcase
b=gets.upcase
p (b*2).include? a

С примерами, которые я могу придумать, код Ruby работает правильно, но по какой-то причине он не работал на сайте гольфа кода (codingame.com, проблема была предложена пользователем «10100111001»).

0
Mathieu CAROFF 19 Ноя 2018 в 01:07

1 ответ

Лучший ответ

В Ruby gets включает \n в конце. Тебе придется .chomp его убрать, прежде чем что-либо делать.

a=gets.chomp.upcase
b=gets.chomp.upcase
p (b*2).include? a

Между прочим, это неправильный способ «сказать, можно ли было получить одну струну вращением другой струны», это лишь частично решает проблему, надеюсь, вы это знаете.

1
Marco Bonelli 19 Ноя 2018 в 00:15