Раді Вас бачити! » Увійти » Створити новий профіль

ФУП Математика - как поделить массив чисел на группы по 4 числа ?

Пример
Есть порядка 25 тысяч разных чисел

N п/п Число

1  3333
2 555555
3 3333
4 66666
5 66
6 88888
7 66666
8 66666
9 5555
10 777
...
25386  44444

мне надо поделить их на группы по 4 числа согласно порядковому номеру
3333 555555 3333 66666
66 88888 66666 66666
5555 777

Как это сделать ? Может математики помогут ?
Помогите плиз
   
как матеиатик хз , но как программист скажу что задачка на 15 минут с перекуром скрипт на пайтоне написать
   
Пример
Есть порядка 25 тысяч разных чисел

N п/п Число

1  3333
2 555555
3 3333
4 66666
5 66
6 88888
7 66666
8 66666
9 5555
10 777
...
25386  44444

мне надо поделить их на группы по 4 числа согласно порядковому номеру
3333 555555 3333 66666
66 88888 66666 66666
5555 777

Как это сделать ? Может математики помогут ?
Помогите плиз

тести здаєте на програмера?
   
Математики? Тебе алгоритм или результат? Я так понимаю это должно достаточно легко решаться простой программой...
   
как матеиатик хз , но как программист скажу что задачка на 15 минут с перекуром скрипт на пайтоне написать

нет только SQL
   
целочисленное деление знаешь что такое ?
вот номер группы = (№пп-1) \ 4
   
как матеиатик хз , но как программист скажу что задачка на 15 минут с перекуром скрипт на пайтоне написать
О!
   
тести здаєте на програмера?

нет
реальная задача

   
а если это числа в какойнить sql базе то задачка на 5 минут с перекуром
   
Ексель в помощь.
   
а если это числа в какойнить sql базе то задачка на 5 минут с перекуром

ну так напиши sql запрос
   
какая база .. там синтаксис разный ...

Оракл , майкрософтсервер , постгрес,  мусиквел  или чето екзотическое ?
   
какая база .. там синтаксис разный ...

Оракл , майкрософтсервер , постгрес,  мусиквел  или чето екзотическое ?

postgresql
   
использовать анси sql  или можно всякие процежурные расширения типа plsql tsql?
   
использовать анси sql  или можно всякие процежурные расширения типа plsql tsql?

только чистый sql
   
postgresql

Ща напишу  ... я в постели с телефона на фупе ща до ноута дотянусь
   
а ты случаем не на собеседование ко мне готовишся ?
   
Упорядочение - есть масса стандартных алгоритмов. Как перевести алгоритм в термины языка программирования, которым пользуетесь, не должно быть проблемой.

Почти все нужные (или даже возможные) алгоритмы опубликованы в книге Кнут, искусство программирования, 1968 год.


https://ru.wikipedia.org/wiki/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
   
а ты случаем не на собеседование ко мне готовишся ?
:lol:
   
Если нумеровать группы начиная с нуля, то номер группы, в которую надо поместить число с порядковым номером N, равен G = N/4
При этом номер числа в группе будет равен n = N%4

PS: / и % это страндартные арифметические операторы С

Останнє редагування: 4 лютого 2016 23:34:12 від Jacob
   
а ты случаем не на собеседование ко мне готовишся ?

?

вообще-то мне надо разбить наших пользователей по четыре для печати для лотереи
   
а оракле я бы сделал выборку с полем row_number() / 4 потом группировку с listagg по нему

Останнє редагування: 4 лютого 2016 23:32:10 від h2o
   
reshape(x,4,length(x)/4)
в Matlabе, правда :(
   
а ты случаем не на собеседование ко мне готовишся ?

отэта креатиф, если чо)))))
   
Код: [Select]
import sys
for line in sys.stdin:
    i, n = line.split()
    print(n, end=' ')
    if int(i) % 4 == 0:
        print()

тебе такое надо или я не понял проблему?
   
Код: [Select]
import sys
for line in sys.stdin:
    i, n = line.split()
    print(n, end=' ')
    if int(i) % 4 == 0:
        print()
тебе такое надо или я не понял проблему?

ну да
только сделать с помощью select в postgresql
   
select group_concat(чісло) group by N % 4
   
а ты случаем не на собеседование ко мне готовишся ?
ви готови пройті поліграф?
конечно, а поліграф готов пройті мєня?
   
select group_concat(чісло) group by N % 4

О! Це супер. Але мабуть /, бо буде тільки 4 групи, а не багато груп по 4
   
О! Це супер. Але мабуть /, бо буде тільки 4 групи, а не багато груп по 4
так, вибачаюсь, не остача, цілочисельне ділення
то був псевдокод з ідеєю
   
это в mysql

array_agg
   
select group_concat(чісло) group by N % 4
% нельзя
будет 4 группы , а не куча групп по 4
нужно обычное целочисленное деление
и не факт,  что n со сквозной нумерацией
поэтому лучше с row_number с сортировкой по этому "по порядку"
   
это в mysql
ну погугли postgresql concat group by
   
/// <summary>
/// Splits an array into several smaller arrays.
/// </summary>
/// <typeparam name="T">The type of the array.</typeparam>
/// <param name="array">The array to split.</param>
/// <param name="size">The size of the smaller arrays.</param>
/// <returns>An array containing smaller arrays.</returns>
public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size)
{
    for (var i = 0; i < (float)array.Length / size; i++)
    {
        yield return array.Skip(i * size).Take(size);
    }
}

 :pleasantr:
   
и не факт,  что n со сквозной нумерацией
N п/п Число
   
/// <summary>
/// Splits an array into several smaller arrays.
/// </summary>
/// <typeparam name="T">The type of the array.</typeparam>
/// <param name="array">The array to split.</param>
/// <param name="size">The size of the smaller arrays.</param>
/// <returns>An array containing smaller arrays.</returns>
public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size)
{
    for (var i = 0; i < (float)array.Length / size; i++)
    {
        yield return array.Skip(i * size).Take(size);
    }
}

 :pleasantr:

Ще сортування у групах потрібно: Take(size).Sort()
   
/// <summary>
/// Splits an array into several smaller arrays.
/// </summary>
/// <typeparam name="T">The type of the array.</typeparam>
/// <param name="array">The array to split.</param>
/// <param name="size">The size of the smaller arrays.</param>
/// <returns>An array containing smaller arrays.</returns>
public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size)
{
    for (var i = 0; i < (float)array.Length / size; i++)
    {
        yield return array.Skip(i * size).Take(size);
    }
}

 :pleasantr:
(югенд стайл) за такий код спалити на кострі
   
(югенд стайл) за такий код спалити на кострі

Це мінімальний код.

P.S.
EDIT, воно не візьме останній array, тому треба додаткову перевірку після for () {}:

/// <summary>
/// Splits an array into several smaller arrays.
/// </summary>
/// <typeparam name="T">The type of the array.</typeparam>
/// <param name="array">The array to split.</param>
/// <param name="size">The size of the smaller arrays.</param>
/// <returns>An array containing smaller arrays.</returns>
public static IEnumerable<IEnumerable<T>> Split<T>(this T[] array, int size)
{
    for (var i = 0; i < (int)array.Length / size; i++)
    {
        yield return array.Skip(i * size).Take(size);
    }
    if (array.Length % size > 0)
    {
        yield return array.Skip(array.Length - array.Length % size).Take(array.Length % size);
    }
}


Останнє редагування: 5 лютого 2016 00:04:59 від muliar
   
EDIT, воно не візьме останній array, тому треба додаткову перевірку після for () {}:
возьмет
там в  for  (float) был
   

Цю тему переглядають:

0 Користувачів і 1 гість
 
Повна версія