
Evgeniy
30.06.2018
09:21:53
https://sergeytihon.com/2018/06/30/f-weekly-26-2018-guide-to-f-async-and-common-hazards

Roman
30.06.2018
11:47:00
Hi

mute
30.06.2018
11:47:24
+
я настоящий. не баньте)

Google

Vasily
30.06.2018
11:59:03
Замьютить можем

Roman
30.06.2018
12:01:45

Vasily
30.06.2018
12:10:56
Шутка осталась непонятой :)

Vlad
30.06.2018
12:11:19

Roman
30.06.2018
22:02:40
Привет!

евроневидимка
30.06.2018
22:03:21
Здарова

Andrew
30.06.2018
22:04:42
И вам привет )

Vladimir
01.07.2018
08:24:43
Кажется я нашел идеальную задачу чтобы разносить в пух сишарпистов)
Write some code, that will flatten an array of arbitrarily nested arrays of integers into a flat array of integers. e.g. [[1,2,[3]],4] -> [1,2,3,4].

Evgeniy
01.07.2018
08:39:53
Типы не натянутся.

Vladimir
01.07.2018
08:47:22
В том то и фишка, надо сделать свой тип чтобы натянулись)
в итоге на фшарпе выходит 6 строк кода + еще 6 чтобы в консольке пример запустить

Google

Vladimir
01.07.2018
08:49:44
а на сишарпе страшно представить

Kirill
01.07.2018
08:50:30
а динамики?
тоже, конечно, мало не будет

Vladimir
01.07.2018
08:51:49
ага, плюс потеряется типизация

Ayrat
01.07.2018
09:01:05
а в каком виде предполагается инпут?
если для F# предполагается сразу массив DU (а DU = массив или число), то нечестно опять к C#
если строкой и надо парсить, то ваще забей. Если массив объектов, то туда сюда

Vladimir
01.07.2018
09:03:00
не указано в задаче, должен придумать, возможно ты его сам генеришь в рантайме
ну или да - откуда-то приходит строка

Vasily
01.07.2018
09:05:33
На c# через рефлексию делается

Ayrat
01.07.2018
09:06:55
да не

Vladimir
01.07.2018
09:07:21

Ayrat
01.07.2018
09:07:47
а не, не хватит. но мысль понятна
хардкастами приводить к int[]
даже без проверок
упадёт - значит инпут плохой) надо в начале пытаться привести к int[], потом к int, затем уже к object[]

Vladimir
01.07.2018
09:10:53
инпут же есть ([[1,2,[3]],4] -> [1,2,3,4]), можешь сразу вместе с кодом консольки выложить на гист

Ayrat
01.07.2018
09:11:52
в сишарпе так инпут нельзя сделать
там надо new[] {1,2,3}

Google

Vladimir
01.07.2018
09:12:18
new obj[]

Ayrat
01.07.2018
09:14:38
вот этого должно хватить ещё и генерик

Vladimir
01.07.2018
09:15:12
Но по-хорошему там надо сделать интерфейс и две имплементации

Friedrich
01.07.2018
09:15:30
Не, слишком срамное решение. Я бы и C#-программисту предложил сделать свой тип для элемента массива.

Ayrat
01.07.2018
09:16:11
работает и тоже 4 строчки)
единственное унижение здесь - стак оверфлоу на рекурсии

Vladimir
01.07.2018
09:19:13
нужен гист чтобы сравнить)

Ayrat
01.07.2018
09:19:41
что сравнить?)

Vladimir
01.07.2018
09:20:25
имплементации) и запустить же хочется тоже)

Ayrat
01.07.2018
09:20:44
public static T[] Flatten<T>(object[] arr) =>
arr.SelectMany(o =>{ if (o is T t) return new[] {t};
try { return (T[]) o; }
catch { return Flatten<T>((object[]) o); }})
.ToArray();
так пойдёт?

Vladimir
01.07.2018
09:20:57
хотя бы так

Ayrat
01.07.2018
09:21:24
инпут я не осилил сделать

TheRainwildsKeeper
01.07.2018
09:22:31

Friedrich
01.07.2018
09:24:18
Предлагаю в качестве входных данных давать obj[] и заодно сравнить, насколько хорошо будет выглядеть паттерн-матчинг в обоих языках для разбора в пользовательский тип.

Vladimir
01.07.2018
09:25:12

Anna
01.07.2018
09:31:01
На racket ещё проще такую задачу решать :)
Ну или на любом лиспе

Friedrich
01.07.2018
09:32:06

Ayrat
01.07.2018
09:47:26
шарплаб с моей имплементацией и инпутом от Vladimir справляется.

Google

Ayrat
01.07.2018
09:47:50
так что задача на унижение C# не катит
Ещё лучше сделаль:
https://sharplab.io/#v2:EYLgZgpghgLgrgJwgZwLRIMaOQSwG4SoAOsMECAdsgDQAmIA1AD4ACADAAQsCMA3ALAAodl24A6ADI4KARwHCAzKIBsXAEyiA7BwDeQjgY77DPVQHtgAKwgYYAbQC6HMshgcAvBwoQA7hwvWto66Xr7+Vjb2Tjoc3NQcavHefgGRwTFKAL4cmfEALDnyhkaCxSxKplwFPAAcABQAlLrGxQZ4UAgcSMgezigwYgDKEAA2kQCyUBQAnnUAYiOkEBQAPNIwAHwNYgAqZgCCCAhQsw1FrQY8AJx13WctOQ8PlTvBC0urOxt1qbb+Te4Nv4OMgfDgYBgABYPPSlC4cHbODxA5LpGC5B7FV5OGA9QHOGiYwy/KL+PFAszIIajCZTWbvGBkT5bXYHI4nRrUIkGAD6yOckIQZj8yQ4AFEAB4YCBEGA4MwUOoAIh8QooAHMONIiHAYEqGg9MvJMkA

Vladimir
01.07.2018
10:11:14
тут создается слишком много массивов, на каждый элемент массив

Ayrat
01.07.2018
10:11:51
это мелочи

Dmitry
01.07.2018
10:13:48
А у меня концептуальный вопрос про эту задачу - а каким способом надо было прийти к наличии такой структуру на входе (что её породило) и к необходимости её "разгладить"? Т.е. может проще было бы концептуально поправить в другом месте? (я так понимаю, мы что-то парсим, но если мы имеем контроль над тем, что парсится, может не порождать такие форматы данных?)

Vladimir
01.07.2018
10:20:17

Ayrat
01.07.2018
10:21:14

Vladimir
01.07.2018
10:22:53
Не компилится

Ayrat
01.07.2018
10:24:44
Не компилится
https://sharplab.io/#v2:EYLgZgpghgLgrgJwgZwLRIMaOQSwG4SoAOsMECAdsgDQAmIA1AD4ACADAAQsCMA3ALAAodl24A6ADI4KARwHDOPACzyWAZlEA2LgCZRAdg4BvIRzMdT5ntoD2wAFYQMMANoBdDmWQwOAXg4UEADuHHaOzu7GAcGhDk6uHkYc3NQcOqmBIWHxkUkaAL4c+alKRfLmFoIV6lpcpTwAHAAUAJTGlhVmeFAIHEjIfp4oMGIAyhAANvEAslAUAJ5NAGITpBAUADzSMAB8LWIAKjYAgggIUIst5Z1mPACcTf1XHUUvL9aiahsHOxwra5sfk1ss5Qm1fL8bBxkEEcDAMAALF4mKo3DgHTx+X6ZXIwYovCoHSIwAYQzw0AnmEEJUKkyHIMaTGZzRb/GBkQF7aiUswAfSxngRCBsIUyHAAogAPDAQIgwHA2ChNABEQWFFAA5hxpEQ4DBlS0Xvl5PkgA==

Vladimir
01.07.2018
10:30:39

Pavel
01.07.2018
10:31:26

Ayrat
01.07.2018
10:31:35
а, я понял о чём ты, ну собсно и чо? yield и погнали
вон @deexpp уже сделал
ты к мелочам придираешься)
ты сказал что это задача на унижение C#
я чот не нашёл унижения

Vladimir
01.07.2018
10:38:47

Ayrat
01.07.2018
10:39:00
обожемой

Google

Ayrat
01.07.2018
10:39:17
Это внутренности метода
Снаружи вполне дженерик функция. А инпут объектный потому что, извините. в F# такая же бодяга

Vladimir
01.07.2018
10:42:32
а должна быть функция которая принимает вложенные массивы интов
а не что угодно еще

Ayrat
01.07.2018
10:46:13
Это звучит не очень, т.к. ты затачиваешь инпут под свой тип, который ты объявил в F#.
и потом говоришь что теперь задачу решать проще. Я согласен проще, но это абсолютно нечестно

Pavel
01.07.2018
10:47:05

Vladimir
01.07.2018
10:48:22

Pavel
01.07.2018
10:49:13
ну с DU объяви. съэконосмь пару строк
вообще нарисовал бы сначала полный пример на эфе
а то на ходу условия меняешь

Vladimir
01.07.2018
10:51:50
https://gist.github.com/Lanayx/43265b03e5cf5aa31baaca3a1126def9

Ayrat
01.07.2018
10:51:58
ну вот ты себе тестовый массив сделал вида, который только в F# и будет доступен

Vladimir
01.07.2018
10:53:08
так я и говорил что инпут можешь сам себе создать

Pavel
01.07.2018
10:53:26
т.е. ты сишников решил унизить примером использования List<_> в F# :)