ЙажаСценарий / Говнокод #26475 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
var ER={}, x=new TextDecoder('KOI8-R').decode(Uint8Array.from( Array.apply(0,new Uint8Array(64).map( (_,b)=>b&1 ? 128+0x61+b/2 : 65+b/2 ))))
for (var i=0;i<64;i+=2){
   if (i<52)
   ER[x[ i ]] = x[i+1], ER[ x[i].toLowerCase() ] = x[i+1].toLowerCase()
   ER[x[i+1]] = x[ i ], ER[x[i+1].toLowerCase()] = x[ i ].toLowerCase();
}
text=`<Налог>
    <Наименование>НДС</Наименование>
    <УчтеноВСумме>false</УчтеноВСумме>
</Налог>`
text.replace(/./g,(char,offset,text) =>  ER[char] || char);

Из юзерскрипта для транслитерации в обоих направлениях.

Запостил: 3.14159265 3.14159265, (Updated )

Комментарии (63) RSS

  • Забавно что код генерилки пар, в итоге занял в 2 раза больше места чем сгенерённая им строка:
    x="AАBБCЦDДEЕFФGГHХIИJЙKКLЛMМNНOОPПQЯRРSСTТUУVЖWВXЬYЫZЗ[Ш\\Э]Щ^Ч_Ъ`\u0000"
    x=new TextDecoder('KOI8-R').decode(Uint8Array.from( Array.apply(0,new Uint8Array(64).map( (_,b)=>b&1 ? 128+0x61+b/2 : 65+b/2 ))))
    Ответить
    • Упростил в 4 строки:
      var ER={},x="AАBБCЦDДEЕFФGГHХIИYЙJЖKКLЛMМNНOОPПQЯRРSСTТUУVЖWВXЬZЗŞШÉЭŞЩÇЧÜЮĪЫ";
      x+=x.toLowerCase();
      for (var i=0;i<128;i+=2) ER[x[i]] = x[i+1], ER[x[i+1]] = x[i];
      text.replace(/./g,(char) =>  ER[char] || char);
      Ответить
      • Procedura ObrabotkaZapolneniq(DannīeZapolneniq, StandartnaqObrabotka)
        	
        	Organizaciq1 = Sprawoçniki.Organizacii.PustaqSsīlka();
        	Organizaciq1 = Sprawoçniki.Organizacii.NaytiPoNaimenowaniü(\"HHHHH Andrey Aleksandrowiç IP\");
        	Organizaciq = Organizaciq1;
        	OrganizaciqŞapka = Organizaciq1;
        	Sklad = Sprawoçniki.Skladī.NaytiPoNaimenowaniü(\"Serwis centr\");
        	Kontragent = Sprawoçniki.Partnerī.NaytiPoNaimenowaniü(\"Rozniçnīy pokupatelx\");
        	WidOperacii = Pereçisleniq.WidRemonta.PlatnīyRemont;
        	
        KonecProcedurī;
        Ответить
            • https://en.wiktionary.org/wiki/şapka

              From Ottoman Turkish شاپقه‎ (şapka), borrowed from Russian ша́пка (šápka).

              Кстати, русское слово произошло из французского.

              Ultimately from the Old French chape, since the 14th century.

              А уже из русского кто только не заимствовал.

              Descendants:
              → Kurdish:
              Central Kurdish: شەپکە‎ (şepke), شەبکە‎ (şebke)
              → Persian: شابگا‎ (šâbgâ)
              → Ottoman Turkish: شاپقه‎ (şapka)
              Turkish: şapka
              → Armenian: շափխա (šapʿxa)
              → Uyghur: شەپكە‎ (shepke)/шәпкә (shepke)
              Ответить
              • Я просто когда-то будучи в Турции кепку забыл.
                Прихожу и долго по-английски пытаюсь объяснить что мне надо.
                И hat, и cap.
                Ответить
              • хттпс://ен.виктионарй.орг/вики/шапка

                Фром Оттоман Туркисх شاپقه‎ (шапка), борровед фром Руссиан şápka (šáпка).

                Kstati, russkoe slowo proizoşlo iz francuzskogo.

                Ултимателй фром тхе Олд Френцх цхапе, синце тхе 14тх центурй.

                A uje iz russkogo kto tolxko ne zaimstwowal.

                Десцендантс:
                → Курдисх:
                Централ Курдисх: شەپکە‎ (шепке), شەبکە‎ (шебке)
                → Персиан: شابگا‎ (šâбгâ)
                → Оттоман Туркисх: شاپقه‎ (шапка)
                Туркисх: шапка
                → Армениан: շափխա (šапʿьа)
                → Уйгхур: شەپكە‎ (схепке)/şәpkә (схепке)"
                Ответить
          • >StandartnaqObrabotka
            у поляков было бы наоборот жи, у них же сущ-прил обычно
            Ответить
  • <KommerчeskaqInformaciq WersiqShemy=\"2.03\" DataFormirowaniq=\"2016-08-11\">
    	<PaketPredlovenij>
    		<Id>0ф6ацф08-0501-11е5-а1ед-000еа6ф880ф2#</Id>
    		\ufeff<Naimenowanie>Paket predlovenij</Naimenowanie>
    		<IdKataloga>0ф6ацф08-0501-11е5-а1ед-000еа6ф880ф2</IdKataloga>
    		<IdKlassifikatora>0ф6ацф08-0501-11е5-а1ед-000еа6ф880ф2</IdKlassifikatora>
    		<TipyCen>
    			<TipCeny>
    				<Id>0ф6ацф0е-0501-11е5-а1ед-000еа6ф880ф2</Id>
    				<Naimenowanie>Розн</Naimenowanie>
    				<Walюta>УАХ</Walюta>
    				<Nalog>
    					<Naimenowanie>NDS</Naimenowanie>
    					<UчtenoWSumme>фалсе</UчtenoWSumme>
    				</Nalog>
    			</TipCeny>
    			<TipCeny>
    				<Id>0ф6ацф0д-0501-11е5-а1ед-000еа6ф880ф2</Id>
    				<Naimenowanie>Закуп</Naimenowanie>
    				<Walюta>УАХ</Walюta>
    				<Nalo\ufeffg>
    					<Naimenowanie>NDS</Naimenowanie>
    					<UчtenoWSumme>фалсе</UчtenoWSumme>
    				</Nalog\ufeff>
    			</TipCeny>
    		</TipyCen>
    		<Predloveniq>
    			<Predlovenie>
    				<Id>1еб6ад86-а729-11е2-бе44-000а5е5фа127</Id>
    				<Artikul>0084</Artikul>
    				<Artikull>00000002839</Artikull>
    				<Naimenowanie>ЦОЛОРПЛАСТ   Awtobus \"Busik №1\"</Naimenowanie>
    				<BazowaqEdinica Kod=\"2009\" NaimenowaniePolnoe=\"Шtuka\" MevdunarodnoeSokraщenie=\"\">шt</BazowaqEdinica>
    				<Ceny>
    					<Cena>
    						<Predstawlenie>61,88 УАХ za шt</Predstawlenie>
    						<IdTipaCeny>0ф6ацф0е-0501-11е5-а1ед-000еа6ф880ф2</IdTipaCeny>
    						<CenaZaEdinicu>61.88</CenaZaEdinicu>
    						<Walюta>УАХ</Walюta>
    						<Edinica>шt</Edinica>
    						<Koэfficient>1</Koэfficient>
    					</Cena>
    					<Cena>
    						<Predstawlenie>44,2 УАХ za шt</Predstawlenie>
    						<IdTipaCeny>0ф6ацф0д-0501-11е5-а1ед-000еа6ф880ф2</IdTipaCeny>
    						<CenaZaEdinicu>44.2</CenaZaEdinicu>
    						<Walюta>УАХ</Walюta>
    						<Edinica>шt</Edinica>
    						<Koэfficient>1</Koэfficient>
    					</Cena>
    				</Ceny>
    				<Koliчestwo>24</Koliчestwo>
    			</Predlovenie>		
    		<SodervitTolxkoIzmeneniq>фалсе</SodervitTolxkoIzmeneniq>
    	</PaketPredlovenij>
    </KommerчeskaqInformaciq>
    Ответить
  • WYBRATX RAZLI^NYE
    	WYRAZITX(Raboty.Ssylka KAK Dokument.ZakazNarqd) KAK SsylkaZN,
    	DC.Ssylka KAK DilerskijCentr
    IZ
    	Dokument.ZakazNarqd.Raboty KAK Raboty
    		LEWOE SOEDINENIE Sprawo^nik.ЦРМ_DilerskieCentry KAK DC
    		PO (LOVX)
    GDE
    	Raboty.Ssylka.DataZakrytiq >= &DataNa^ala
    	I Raboty.Ssylka.DataZakrytiq < &DataOkon^aniq
    	I DC.Ssylka.PometkaUdaleniq = LOVX
    ;
    
    ProizwedenaRabota = Istina;
    	
    Esli Zapra[iwatxTrudozatraty I Ne WypolnqetsqPerenaprawlenie Togda
    	ProizwedenaRabota = Istina;
    KonecEsli;
    Ответить
  • То же решение https://govnokod.ru/26475#comment532156, но в 2 строчки.
    var R="AАBБCЦDДEЕFФGГHХIИYЙJЖKКLЛMМNНOОPПQЯRРSСTТUУVЖWВXЬZЗŞШÉЭŞЩÇЧÜЮĪЫaаbбcцdдeеfфgгhхiиyйjжkкlлmмnнoоpпqяrрsсtтuуvжwвxьzзşшéэşщçчüюīы";
    `pituz багор`.replace(/./g,(char) =>  R[R.indexOf(char) ^ 1] || char);
    Ответить
  • 'Конечно у руби-то все опять лопотнули'.encode('KOI8-R').bytes.map{|b|b & 0x7F}.pack('c*')
    # "kONE^NO U RUBI-TO WSE OPQTX LOPOTNULI
    Ответить
    • Во-первых мой код сохраняет регистр текста, а не инвертирует его.
      Во-вторых, не херит спец. символы выше 0x7F.
      В-третьих, он работает в обе стороны, с ингриша на русский тоже создавая приятный шизоэффект.
      Ответить
    • >>> ''.join((chr(c & 0x7F) for c in 'А я за Питон.'.encode('KOI8-R')))
      'a Q ZA pITON.'


      Ну ладно, ладно, вложенные функциональные вызовы Питона сосут.
      Ответить
      • >>> ''.жоин((цхр(ц & 0ь7Ф) фор ц ин 'A q za Piton.'.енцоде('КОИ8-Р')))
        'а Я ЗА пИТОН.'

        Nu ladno, ladno, wlojennīe funkcionalxnīe wīzowī Pitona sosut.
        Ответить
      • кстати, почему?

        Питонисты не понимают, что читать слева направо удобнее, чем блядь даже не знаю как это назвать?
        Ответить
        • Кажется, Гвидо где-то вовсю топил за генераторы и * comprehensions, а функциональщину объявил нинужной.
          Ответить
          • компрехеншены тоже не слишком то читаемы

            Сколько людей без питушачего бекграунда поймет, что тут написано?

            (petuh.iq for petuh in petuhi if petuh.name == 'syoma')
            Ответить
            • Справедливости ради, питухи без функционального бекграунда не поймут и
              petuhi.filter(petuh => petuh.name == 'syoma').map(petuh => petuh.iq)
              .
              А так-то, ИМХО, на самых простых операциях, вроде этой, *comprehensions выглядят более читабельными: «(что for где if когда)». А вот когда надо сделать несколько .map.filter.map.filter — там да, генераторы сосать начинают.

              А ещё вложенные *comprehensions — это пиздец:
              arr = [[1,2,3], [4,5,6], [7,8,9]]
              [x for y in arr for x in y]  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
              Ответить
              • функционалочку нынче умеют везде: слева направо можно строить цепочки в коко, жабе, шапее, руби, в некотором смысле даже в перле и шеле пайпы на это похожи.
                Ответить
              • >на самых простых операциях, вроде этой, *comprehensions выглядят более читабельными: «(что for где if когда)»

                Нет. Это самая гавняная фича питона.
                Хотя код вроде компактнее и более похож на английский текст.
                Ответить
                  • Меня comprehensions в ступор поначалу очень сильно ставили.
                    Мой парсер подвисал, когда натыкался на такие конструкты.
                    Ответить
                    • Ну хз, мне тоже пришлось поРТФМить сначала, а потом понял всю минималистичную прелесть таких коньструкций.
                      Ответить
                      • 1. Неконсистентно.
                        2. Спец. конструкт языка, для узкой задачи. То есть Синтаксический сахар.
                        3. Нарушает There's Only One Way
                        4. Нельзя написать своё или как-то переиначить. С фунциональщиной могу написать свой [1,2,x=>x+1]).forEachData() который при итерации, например, будет игнорить функции.
                        Ответить
                        • >There's Only One Way
                          Этот принцип в питоне похерен черте когда, в том числе и компрехежынами (есть filter же)
                          Ответить
                        • 1. Разве? Оно вполне сочетается с обычным «for x in y» циклом.
                          2. Создание списков/генераторов/словарей по простейшим критериям — очень распространённая задача. Создание отдельной коньструкции для неё уместно.
                          3. TOOWTDI — эфемерная питушня, которую нарушает чуть ли не любая коньструкция в Питоне.
                          4. Потому что *comprehensions нужны для простых задач, сводящихся к простому arr.filter().map(). Ну и да, а почему не (x for x in arr if type(x) == int)?

                          А вот по поводу
                          > слишком много слов подряд без разделителей
                          пожалуй, соглашусь.
                          Ответить
                          • Пытхон
                            (petuh.iq for petuh in petuhi if petuh.name == 'syoma')
                            
                            ЙажаСцрипт №1
                            petuhi.filter(petuh=>petuh.name == 'syoma').map(petuh=>petuh.iq)
                            
                            ЙажаСцрипт №2
                            petuhi.koko(petuh=>(petuh.name == 'syoma') ? petuh.iq : SKIP);


                            Да сахар это, причём не оч. удачный. С ФП можно своё настрогать. Не намного длинее.
                            Ответить
                            • Ну да, сахар, а что такого? Стрелочные функции, кстати, тоже классический сахар (ладно, более удачный, чем *c).
                              petuhi.filter(function(petuh) { return petuh.name == 'syoma'; }).map(function(petuh) { return petuh.iq; });
                              Ответить
                              • >Стрелочные функции, тоже классический сахар
                                100%

                                >более удачный
                                Притом намного. Поскольку функции в ФП повсеместны. Этот сахар заметно снижает синтаксическую переголову.

                                C ними мне гораздо проще стало говнячить js-однострочники.
                                https://govnokod.ru/26475#comment532191
                                Ответить
                              • Вообще мысль была, что если я захочу расширить comprehensions всякими group by или count, то не смогу это сделать.
                                Ответить
                                • Ну да, *c — это, в сущности, частный случай ФП-цепочки — x.filter().map() (причём с порезанными лямбдами, за которые Гвидо надо выпороть). Расширять частный случай нинужно, нужно просто использовать общий инструмент (которого в Пистоне и нет, гы-гы-гы).
                                  Ответить
                                  • > с порезанными лямбдами, за которые Гвидо надо выпороть
                                    +1. То ли дело Mr Eich. У него один и тот же синтаксис успешно служил долгие годы как для лямбд, так и для обычных функций без СМС и регистрации как один способ сделать абстракцию.
                                    Ответить
                          • >а почему не (x for x in arr if type(x) == int)

                            Смысл в том, что если в языке-конструкторе когда какой-то родной конструкт не устраивает это можно починить. Сделав свой.

                            Взять негодный for~in в js. Написал свой $.each.
                            Или хранение данных вперемешку с кодом.
                            Написал свой forEach, который итерируется только по значениям не являющимся функциями.

                            Благодаря ФП можно настрогать себе аналогов любых императивных конструктов на любой вкус.

                            >(x for x in arr if type(x) == function)
                            А такое говно придётся везде копипастить.

                            Или пилить отдельный метод. Но тогда comprehension будут использованы всего один раз. В том методе.
                            Ответить
                            • Ещё раз повторяю, что я не противопоставляю *comprehensions функциональщине и не заявляю, что *c в принципе лучше ФП.

                              > если в языке-конструкторе когда какой-то родной конструкт не устраивает
                              Починить != сделать новый. Написание $.each никак не исправляет говёный for~in.

                              >>> Потому что *comprehensions нужны для простых задач, сводящихся к простому arr.filter().map().
                              Именно на таких задачах они выглядят просто и нативно («pythonic»).
                              Ответить
                              • > я не противопоставляю *comprehensions функциональщине
                                Иначе это было бы глупо.
                                Это же декларативные описания множеств из математики. Математический синтаксиальный сахарок. Такой питушне самое место в функциональном питухе.

                                Однако, сами comprehensions я не люблю за то, что они более жёткие. Там, где была произвольная коллекция и произвольное преобразование, которые соединили через map, в comprehensions есть произвольная коллекция и обрубок отображательного кода, который только в лямбду и пихнёшь.

                                Я эту питушню использовал по большей части из-за параноидальности питона, когда хотел вывести массив через запятую.
                                Божественный JS:
                                console.log(xs.join(', '));

                                Анскильный python:
                                print(', '.join([str(x) for x in xs]))
                                Ответить
                        • Ну и добавлю, что я ни в коем случае не говорю, что функциональщина нинужна. Наоборот, ящитаю, что отсутствие классическихх chain call'ов в Питоне — это очень большой проёб Гвидо.
                          Ответить
                          • > не говорю, что функциональщина нинужна
                            > отсутствие классическихх chain call'ов — проёб
                            А точно ли это функциональщина? Мне всегда казалось, что цепочкушня - признак ООП-питушни, и в реальном мире чаще занята ООПитухами, чем ФПитухами.

                            Цепочкушня легче соответствует парадигме порче this. Чтобы испортить свой аргумент, его надо передать по ссылке. В C++ это может быть объект чужого класса, автор которого сделал его const. А this - всегда свой и по умолчанию меняется.

                            Кстати, смотрите, какой анскилл в JS:
                            xs
                              .map (x => x+1) // OK, pure
                              .filter(x => x > 0) // OK, pure
                              .sort ((x,y) => (x%10) - (y%10)) // massiv popirdoliło
                            ;


                            P.S. Хорошо, xs не изменился сам, функциональная чистота осталась за счёт того, что попердолили временнушню. Но на месте временнушни мог бы быть и xs. Напьёшься - будешь!
                            Ответить
            • >(petuh.iq FOR petuh IN petuhi IF petuh.name == 'syoma')
              Чуть лучше. Но тоже хуйня
              Проблема в том что слишком много слов подряд без разделителей.
              Ответить
                • Там хотя бы консистентно.
                  А тут идут скобочки, точечки, двоеточия, запятые и тут хуяк скобка открылась, предложение из кучи текста и опять привычный код с разделителями.
                  Ответить
              • petuhi
                    .Where(petuh => petuh.name == "syoma")
                    .Select(petuh => petuh.iq);


                или

                from petuh in petuhi
                    where petuh.name == "syoma"
                    select petuh.iq;
                Ответить
                • Нужны менее многословные лямбды:
                  petuhi
                      .Sort(*1.iq - *2.iq)
                      .Where(*.name == "syoma")
                      .Select(*.iq)
                  Ответить
                  • В бусте есть что-то в духе _1 < _2 (эквивалент [](auto a, auto b) { return a < b; }). Но у этих "лямбд" ограничений дохрена и функции вызывать неудобно.
                    Ответить
                    • Да, я пока писал, вдохновлялся boost::lambdой. Однако, выбрал *1 и *, т.к. выглядит красивее, чем _1 и $1.

                      > В бусте
                      Видел, что ДОБРОЕ ИМЯ ДОБРАЯ СЛАВА ИМЯ ИМЯРЕК В ЧЕСТИ gost недавно писал какую-то лямбдушню с std::. Вероятно, эта питушня уже и в Стандарте.
                      Ответить
                      • > Вероятно, эта питушня уже и в Стандарте.
                        Не, это очень покоцанное говно, только для бинда.
                        int add(int a, int b) { return a + b; }
                        // ...
                        using namespace std::placeholders;
                        auto add42 = std::bind(add, 42, _1);
                        
                        std::cout << add42(5); // 47
                        Ответить
    • 'Koneçno rubi u wseh opqtx lopotnul'.енцоде('КОИ8-Р').бйтес.мап{|б|б & 0ь7Ф}.пацк('ц*')
      Ответить
      • у тебя настолько прдвинутый алгоритм, что он еще и тексты правит?
        Ответить
      • блядь какой смешной тред ))

        таких больше не делают ((
        Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8