Это просто: возьмите матрицу целых чисел в качестве входных данных и выведите индекс строки с большинством ненулевых элементов. Вы можете предположить, что будет только одна строка с большинством ненулевых элементов.
Тестовые случаи:
Это 1-индексированные, вы можете выбрать, хотите ли вы 0 или 1-индексированные.
1
0
row = 1
---
0 -1
0 0
row = 1
---
1 1 0 0 0
0 0 5 0 0
2 3 0 0 0
0 5 6 2 2
row = 4
---
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
row = 3
Ā
вместоÄ0›
-2.R , 31 байт
возвращает анонимную функцию, которая принимает матрицу:
rowSums
суммирует строки с!m
преобразованием 0 в 1 и всего остального в 0.which.min
возвращает основанный на 1 индекс первой строки, которая содержит минимальную сумму (т. е. какая строка имеет наименьшее количество нулей).Попробуйте онлайн!
источник
which.min()
так как ненулевые элементы станут FALSE с!m
.Haskell,
464241 байтПопробуйте онлайн!
Как это работает
источник
C #, 69 байт
Принимает в
List<int[]>
качестве входных данных и возвращает 0-индексированный результат.источник
На самом деле , 9 байтов
Попробуйте онлайн!
Объяснение:
источник
Python 3,
5448 байтСбрил 6 байтов. Старое решение:
источник
APL (Дьялог) , 11 байт
Попробуйте онлайн!
0≠⎕
Булева матрица, где ненулевой+/
сумма строк(
применить следующую молчаливую функцию к списку сумм⌈/
максимум⍳
показатель⊢
в списке аргументов)
источник
Брахилог , 17 байт
Попробуйте онлайн!
источник
05AB1E , 5 байтов
Попробуйте онлайн!
0 индексированные.
источник
Желе , 5 байт
Попробуйте онлайн!
1-индексироваться.
Так много 5-байтовых версий ...
TL$€M
,T€L€M
,TJ$€M
,T€J€M
,¬¬Ṣ€M
,ṠAṢ€M
,ṠAS€M
,AṠṢ€M
,AṠS€M
,¬ċ€0M
, ...источник
Haskell -
6968 байтСпасенный один байт благодаря Сиракузе!
Строки с нулевой индексацией
использование
Попробуйте онлайн!
источник
g=filter
экономит вам один байтm y=length$takeWhile(<maximum y)y
и сократитьlength
вместо этогоfilter
Clojure, 64 байта
Этот работает также с отрицательными числами на входе, к счастью, такой же длины, что и оригинал:
Оригинал:
источник
pos?
что не правильноq / kdb +,
251716 байтРешение:
Пример:
Объяснение:
Заметки:
Проблема довольно проста, это решение кажется слишком сложным.Как только я нажал на кнопку «Отправить», я понял, в чем заключается моя ошибка.Бонус:
Вот ak-решение, которое весит
16109 байт - почти то же самое, но на 7 байт короче, потому что нам не нужны скобки при использовании k встроенных модулей, и в результате некоторые становятся короче, чем ключевые слова q ( например,+/
дляsum
(будет(+/)
в q)).источник
CJam , 11 байт
Попробуйте онлайн!
-2 благодаря Challenger5 .
источник
{0fe=_:e>#}
>
должен быть<
вместо этого ... в любом случае, спасибо. :)PHP , 58 байт
0-индексированные
Попробуйте онлайн!
источник
V , 18 байт
Попробуйте онлайн!
В отличие от большинства ответов V, это 0-индексированный.
Неплохо для языка без числовой поддержки!
;P
Я также обнаружил, что верхний регистр команды count , то
Ø
есть ужасно сломан.источник
Python 3 , 92 байта
Сначала отсортируйте каждую строку так, чтобы записи
[0,0,..,0,x,x,x]
сортировали всю матрицу, чтобы последняя запись вy
строке была . Копияy=x[:]
необходима, так как.sort()
работает на месте, поэтому мы не знаем исходный индекс после сортировки.Я ценю любую помощь, как продвигать это решение дальше. Большинство байтов теряется из-за пробелов в каждой строке. Сам код имеет длину всего 68 байт.
Попробуйте онлайн!
источник
def f(a):b=list(map(sorted,a));return b.index(sorted(b)[-1])
Python 2 ,
64 55 5248 байт0
и использоватьmin()
вместоmax()
input()
вместоdef
lambda
и hash-mapПопробуйте онлайн!
источник
min
сkey
параметромJavaScript (ES6), 62 байта
0 индексированные. Принимает 2D массив в качестве входных данных.
источник
filter
Неявно ли «фильтровать» нули?filter
, имея в виду, что0
это неправда.filter
просто проверял .Желе , 7 байт
Попробуйте онлайн!
источник
Pyth, 6 байт
демонстрация
Вместо того, чтобы найти строку с наибольшим количеством ненулевых элементов, я нахожу строку с наименьшим нулевым элементом.
/D0
: Порядок (D
) по count (/
) из нулей (0
). Неявно применяется кQ
, вход.h
: Возьмите первый и минимальный элемент.xQ
Найти индекс (x
) в input (Q
) этого элемента.источник
Сетчатка , 46 байт
Попробуйте онлайн!
0 индексированные. Работает с положительными и отрицательными целыми числами (и 0). Предполагает отсутствие ведущих нулей.
источник
Java 8, 145 байт
Уродливо, но это работает ..
Объяснение:
Попробуй это здесь.
источник
Java (OpenJDK 8) ,
119101 байтПопробуйте онлайн!
Ява, этот сладкий многословный язык :)
Спасибо за сохранение 18 байт, @KevinCruijssen;)
источник
j
и других более длинных частей, какj=m[i].length,
иm[i][j]
вот так:m->{int i=m.length,M=0,I=0,c;for(;i-->0;){c=0;for(int x:m[i])if(x!=0)c++;if(c>M){M=c;I=i;}}return I;}
( 101 байт )JavaScript (ES6), 51 байт
где
m
2D-массив, а возвращаемый индекс 0-indexedТестовые случаи:
Показать фрагмент кода
источник
Java 8, 100 байт
объяснение
Сила списков и потоков! (и без импорта, для загрузки!)
Давайте разберем эту маленькую лямбду на куски:
Мы превращаем наш список списков (матрицу в вопросе) в поток и проходим через каждый элемент, удаляя все эти надоедливые нули из каждого подсписка. Мы должны явно возвращать подсписок каждый раз здесь, потому что
Stream.map()
преобразует каждый объект в потоке в то, что возвращает отображение, и мы не хотим их изменять.Мы просматриваем наши недавно обнуленные подсписки и просто проверяем, насколько они велики рядом, получая нам самый большой подсписок. Это
.get()
потому, чтоStream.max()
возвращает Optional, требующий дополнительного вызова функции.Мы берем этот самый большой подсписок и находим его в основном списке, давая нам наш результат!
Заметки
Это ломается, если внешний список пуст, но я беру
подразумевать, что всегда будет хотя бы один ряд. Поправьте меня если я ошибаюсь.
источник
Python 2 , 51 байт
Попробуйте онлайн!
Эта версия постепенно удаляет 0 в массивах, печатая текущий индекс, и вылетает, когда больше нет нулей для удаления. Последний напечатанный индекс является ответом.
Python 2 , 57 байт
Попробуйте онлайн!
Хотел попробовать другой подход от того, что уже здесь. Итак, здесь я рекурсивно перебираю массив, удаляя по одному 0 за раз, пока в текущем массиве больше не будет нулей - и затем выводю индекс этого массива.
источник
Japt , 7 байт
0 индексированные. Принимает ввод в виде массива массивов.
Попробуй это
объяснение
Неявный ввод массива
U
.[[0,4,1,0],[0,0,-6,0],[0,1,4,-3],[2,0,0,8],[0,0,0,0]]
Map (
m
)U
возвращает количество истинных (ненулевых) элементов в каждом подмассиве. Неявно назначьте этот новый массивU
.[2,1,3,2,0]
r
Массив Reduce ( )U
, получая большее из текущего значения и текущего элемента.3
Получите первый индекс, в
U
котором элемент равен этому значению, и неявно выведите результат.2
источник