Исключить повторение для номера 1 в массиве - PullRequest
0 голосов
/ 18 марта 2020

У меня есть массив, где значения могут быть только 1 или 0.

array_example = [0, 0, 0, 0, 1]

Как вы можете видеть, в массиве уже есть 1, поэтому мне нужно запретить случай, когда может быть 2 или более элементов со значением 1.

Так же, как в примере, в массиве должен быть только 1 элемент со значением 1, поэтому, если массив будет таким, я должен получить ошибка.

array_example = [1, 0, 0, 0, 1]

Ruby 1.8.7

Рельсы 2.3.4

1 Ответ

2 голосов
/ 18 марта 2020

Хотя в вашем объяснении может быть больше ясности, я полагаю, вы говорите, что у вас есть массив из любого числа нулей и нуля или одного 1. И, если к массиву, уже содержащему его, добавляется 1, чтобы вызвать ошибку.

Если я понимаю, что вы пытаетесь сделать правильно, это не сложно. Все, что вам нужно сделать, это выбрать все элементы, равные 1, и выдать ошибку, если размер результата больше, чем 1:

raise 'Too many ones' if array_example.select { |e| 1 == e }.size > 1

Это повысит значение по умолчанию RuntimeError. Конечно, вы можете вызвать любую ошибку, которая вам нравится (и вам, вероятно, следует создать собственную ошибку для этого, если вы собираетесь обрабатывать ее, используя rescue).

Редактировать: предложение Кэри о Array#count действительно более прямой. Итак:

raise 'Too many ones' if array_example.count(1) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...