Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Rooster

Программирование[8]

Рекомендованные сообщения

Все в майках с лого букмекера чтоли ходят ?

Поделиться сообщением


Ссылка на сообщение

Шо там по функциональщине? 

[5, 10, 11, 12, 13, 14, 17, 18, 19, 24, 25, 27, 28, 29, 31, 35, 36, 37]
|> List.foldl([], fn x, [[n|_] = prev |rest] when x == n + 1 -> [[x|prev] | rest]; x, acc -> [[x]|acc] end)
|> List.foldl([], fn [x], acc -> ["#{x}"|acc]; [x|rest], acc -> ["#{List.last(rest)}-#{x}"|acc] end)
Just.Doit и `KV понравилось это

Поделиться сообщением


Ссылка на сообщение

Ох. функциональщина поплыла ;<


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение

это что ф шарп...


[14:22:31] Сиэль: oh uj eti imbanani

Поделиться сообщением


Ссылка на сообщение

Elixir


Поделиться сообщением


Ссылка на сообщение
(изменено)

 

Шо там по функциональщине? 

[5, 10, 11, 12, 13, 14, 17, 18, 19, 24, 25, 27, 28, 29, 31, 35, 36, 37]
|> List.foldl([], fn x, [[n|_] = prev |rest] when x == n + 1 -> [[x|prev] | rest]; x, acc -> [[x]|acc] end)
|> List.foldl([], fn [x], acc -> ["#{x}"|acc]; [x|rest], acc -> ["#{List.last(rest)}-#{x}"|acc] end)

зачем второй аргумент в фолдлефт? чем отличается "fn x"  и "fn [x]"  ?

 

бтв - https://wandbox.org/permlink/Bgk2PT2sF80VP2AE

ты кажется упустил что нужно пары разбивать на отдельные - "24-25" не правильный элемент


Изменено пользователем Just.Doit

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
(изменено)

 

 

Шо там по функциональщине? 

[5, 10, 11, 12, 13, 14, 17, 18, 19, 24, 25, 27, 28, 29, 31, 35, 36, 37]
|> List.foldl([], fn x, [[n|_] = prev |rest] when x == n + 1 -> [[x|prev] | rest]; x, acc -> [[x]|acc] end)
|> List.foldl([], fn [x], acc -> ["#{x}"|acc]; [x|rest], acc -> ["#{List.last(rest)}-#{x}"|acc] end)

зачем второй аргумент в фолдлефт? чем отличается "fn x"  и "fn [x]"  ?

второе не вкурил тк синтаксиса не понял

 

 

Наверное есть смысл подробно расписать, если кому интересно:

 

|> — pipe operator, передаёт результат выражения в качестве первого аргумента

 

функция List.foldl(list, acc, function)

 

list — односвязный список

acc — начальное значение аккумулятора, может быть хоть чёрт лысый, смотря шо требуется от свёртки

function — функция обратного вызова с арностью 2, где первый аргумент — текущий элемент списка, а второй — текущий аккумулятор

 

В элике есть сопоставление по образцу, aka pattern matching, соответственно у одной функции может быть несколько клозов, и будет вызван тот, где аргументы под образец подходят.

fn x примет аргументом шо угодно и забиндит это к x, fn [x] примет аргументом только односвязный список с одним элементом и забиндит этот элемент к x

ты кажется упустил что нужно пары разбивать на отдельные - "24-25" не правильный элемент

 

Да, невнимательность. Ну делов-то.

[5, 10, 11, 12, 13, 14, 17, 18, 19, 24, 25, 27, 28, 29, 31, 35, 36, 37]
|> List.foldl([], fn x, [[n|_] = prev |rest] when x == n + 1 -> [[x|prev] | rest]; x, acc -> [[x]|acc] end)
|> List.foldl([], fn [x], acc -> ["#{x}"|acc]; [x,y], acc -> ["#{y}", "#{x}"|acc]; [x|rest], acc -> ["#{List.last(rest)}-#{x}"|acc] end)

Изменено пользователем iKrivetko
hira88, `KV и sonac понравилось это

Поделиться сообщением


Ссылка на сообщение

Что такое соцпакет кстати? Что вы в это вкладываете?

Поделиться сообщением


Ссылка на сообщение

страховка, питание, плюшки, кальян с хуящиком в релакс зоне

Поделиться сообщением


Ссылка на сообщение

Изучаю мануал C# и на этом уроке https://docs.microsoft.com/ru-ru/dotnet/csharp/tutorials/intro-to-csharp/interpolated-strings?tutorial-step=2

и у меня код в вижуале выдает ошибки, а в браузере работает нормально  :hmm:

интерполяция через $ фича 6 шарпа и выше

так что если у тебя старая вижла или стоит таргет язык ниже, вот оно и ругается


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

бля эта штука вполне может потягаться с хаскеллом по тому как криптик она выглядит и насколько ни одно ключевой слово/символ не выглядят относящимися к задаче которую они решают

Поделиться сообщением


Ссылка на сообщение

Ну уж не знаю, чем две простые свёртки более "криптик", чем нагромождение циклов, ифов и мутаций.


Поделиться сообщением


Ссылка на сообщение

поссал на вышескинутую антигуманную хуйню для ботанов

Поделиться сообщением


Ссылка на сообщение

 

Есть массив:

[5, 10, 11, 12, 13, 14, 17, 18, 19, 24, 25, 27, 28, 29, 31, 35, 36, 37];

нужно прогнать его через функцию, чтобы получился следующий:

["5", "10-14", "17-19", "24", "25", "27-29", "31", "35-37"]

def collapse_array(initial_arr):
    collapsed_arr = []
    
    i = 0
    while i < len(initial_arr):
        start = initial_arr[i]
        end = initial_arr[i]
        
        j = 1
        while i + j < len(initial_arr):
            if initial_arr[i + j] - start == j:
                end = initial_arr[i + j]
                j += 1
            else:
                j -= 1  # go 1 step back to not overjump the nonconsecutive element under the index i+j
                break
        
        if start == end:
            collapsed_arr.append(str(start))
        elif end - start == 1:
            collapsed_arr.append(str(start))
            collapsed_arr.append(str(end))
        else:
            collapsed_arr.append(f'{start}-{end}')
        
        i += 1 + j
    
    return collapsed_arr

чисто угара ради!

def collapse(lst):
  res = []
  pos=0

  while pos<len(lst):
    try:
      curr=lst[pos]
      if curr == lst[pos+1]-1:
        start = curr
        try:
          while lst[pos]+1 == lst[pos+1]:
            end=lst[pos+1]
            pos=pos+1
        except IndexError:
          res.append(f'{start}-{end}')
          break
        if start != end-1:
          res.append(f'{start}-{end}')
        else:
          res.append(str(start))
          res.append(str(end))
      else:
        res.append(str(curr))
      pos=pos+1
    except IndexError:
      res.append(str(curr))
      break
  return res

 

<< твой комментарий очень важен для форума.

Поделиться сообщением


Ссылка на сообщение

бесит код без вайтспейса между логическими блоками

 

а также экономия символов в именах переменных

Kant понравилось это

Поделиться сообщением


Ссылка на сообщение

бесит код без вайтспейса между логическими блоками

 

а также экономия символов в именах переменных

да, это сразу пиздец подгар на весь день.


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение

https://i.redd.it/1yjc31a1hol21.jpg

 

:trollface:

JuJeu, `KV и Arzanis понравилось это

Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

бесит код без вайтспейса между логическими блоками

 

а также экономия символов в именах переменных

говорит человек с переменными i и j? ) В любом случае я писал чтобы это работало, но выглядело ужасно )


 

<< твой комментарий очень важен для форума.

Поделиться сообщением


Ссылка на сообщение

страховка, питание, плюшки, кальян с хуящиком в релакс зоне

СИРОПЫ

Kant и JuJeu понравилось это

Лишь ощутив баттхерт до конца, мы обретаем свободу

bf4ffc239860.png

Поделиться сообщением


Ссылка на сообщение

 

страховка, питание, плюшки, кальян с хуящиком в релакс зоне

СИРОПЫ

 

нурофен чтоле?


Публикация отключена

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...