LINUX.ORG.RU

Короче есть два итератора

 , ,


1

3

Точнее один, а хочется сделать из него два, так чтобы один отдавал элементы, которые удовлетворяют условию, а во второй, которые не.

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

Поделитесь мыслями, свои закончились.

★★★★★

Последнее исправление: ya-betmen (всего исправлений: 2)

финалити:

from itertools import count
def mkspli(ita,fu,tbl):
    tbl=list(tbl)
    bufs=dict(zip(tbl,([]for _ in count())))
    def mkItFor(k):
        def itForK():
            while 1:
                while not bufs[k]:
                        try:
                            v=next(ita)
                            bufs[fu(v)].append(v)
                        except Exception as e :
                            print(e)
                            return 
                res,*bufs[k]=bufs[k]
                yield res
        return itForK
    its={k:mkItFor(k)() for k in tbl}
    return its

тестик:


def tblN(N):
  for q in mkspli(iter(range(N*N+1)),lambda x:x%N,range(N)).values():print(*q,end='')

for i in range(11):tblN(i)

qulinxao3 ★★
()

чисто для визии что балансы балансятся:

тестовая сесcия на кратные и не; со своим болтливым range:


def z(N):
    for i in range(N):
        print(f'z:{i}')
        yield i
def viewZ(N):
    return mkspli(iter(z(N*N+1)),lambda x:bool(x%N),range(2)).values()
kra,non=viewZ(4)
for i in range(7):print(f'non:{next(non)}')
for _ in range(4):print(f'kra:{next(kra)}')

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 2)

упс лишняя была обёртка:

def mkspli(ita,fu,tbl):
    bufs=__import__('collections').defaultdict(list)
    def itForK(k):
        while 1:
            while not bufs[k]:
                    try:  bufs[fu(v:=next(ita))].append(v)
                    except Exception as e : print(e);return 
            yield bufs[k].pop(0)
    return {k:itForK(k) for k in tbl}
#тостик1:
def tblN(N):
  for q in mkspli(iter(range(N*N+1)),lambda x:x%N,range(N)).values():print(*q,end='')
for i in range(11):tblN(i)
#тесто2:
def z(N):
    for i in range(N):print(f'z:{i}');yield i
def viewZ(N):
    return mkspli(z(N*N+1),lambda x:bool(x%N),range(2)).values()
kra,non=viewZ(4)
for i in range(7):print(f'non:{next(non)}')
for _ in range(4):print(f'kra:{next(kra)}')

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 4)
Ответ на: комментарий от qulinxao3

претензия к историческому gui

в усложнении автоматизации ибо происходит трансляция сущьностей в пиксели и без спецального api (оле и прочий вендор лок) интегрировать «интуитивно понятное» управление и получаем монстров RPA

т.е. тот же postscript как язык управления дисплеем более пригоден для интеграции приложения в «набор взаимодействующих компонент» чем читай состояние дисплея как набора битовых слоёв и откуривай семантику цветовых пятен «интуитивно понятных» кастомеру

в целом, я согласен – посмотри про NeWS и GCC MELT здесь, но

речь и об expect как универсальном интергаторе tui

для gui нет нормального gui_expect ибо gui(в отличии от tui и web) пачкает картинками

посмотри вот тут про guilets и например, guisdoc

и прочие гуйняшечки

вообще, на тему Витусо-Вагнеровского «ТруЪ Unix GUI» – на мой взгляд, эдакие гуйняшечки – например, даже тот же slgtk+slirp и как пример применения всего этого imdisplay, evt2img, vwhere где гуйлеты с гуйняшечками во все поля на SL (:joe,jed,slrn,most,…) = форт с синтаксисом Си

вообче же, было бы отличненько ежели бы возродили NeWS на SL или на функциональном форте вроде фактора, а не guisdoc в духе питоновом (сюда же: gtkserver, и прочие даже "wily+python > emacs +lisp", инферну/9ферну с лимбой и 64-битностью и tk без tcl (ещё бы им наприме, go без лимбо или как-то так))

…. воот, далее про PopLog и например, тот же Tamgu.

про то, что собственно дёргать GCC MELT или LispE можно из более кучерявых синтаксисов.

к примеру, в tamgu/examples/…. можно найти себе невозбранно не только транслятор питона в S-выражения LispE, но и например, транспилятор бейсика на эллинском (вот реально, на греческом там есть бейсик) в более другие формы.

теперь пишем например, не в LispE а в GCC MELT, и скармливаем к плагину GCC-шному.

… bismon эту идею доводит ещё далее, в эдакую ферму конпеляции чего угодно через GCC; то есть, менее лиспообразные S-выражения в MELT, или LispE; ближе к более пространным DSL-ям.

у этого Василия также как и у FaRe (у которого про TUNES OS, Lisp OS есть рассылка) – есть идея про ортогональную персистентность, которой нужно более активно и массово чем сейчас.

… ещё у того же Василия есть ссылка на прелюбопытнейшую книжицу J. Picrat про theory of mind типа ментифлекса, только по своему.

на мой взгляд, лучше бы J. Picrat или ментифлекса закодили бы чем с чятгопотою несознательною играться – дабы невозбранно достигнуть желаемого.

anonymous
()

а хочется сделать из него два, так чтобы один отдавал элементы, которые удовлетворяют условию, а во второй, которые не.

программист ставит два стакана на тумбочку рядом с кроватью, когда ложиться спать.

один пустой, другой полный.

один -- если вдруг проснётся посреди ночи, а тут захочется пить.

и второй -- если не захочется.

дабы невозбранно достигнуть просветления – отдавай два генератора, один который в первый список, второй который во второй.

anonymous
()
Ответ на: комментарий от qulinxao3

книжка pame.pdf = «Programming Algol 68 Made Easy» by Sian Leitch

это конечно не более прикольная и комиксово-лубочно наглядная «Informal introduction to Algol 68» by C. H. Lindsey and s.g. van der meulen – но тоже ничё так. отлично заходит.

Эпиграф оттудова:

Preface

It is a fallacy to say that progress consists of replacing the workable by the new.

The brick was invented by the Babylonians and has been used virtually unchanged
for 2500 years. Even now, despite the advent of curtain-walling, the brick is still
the primary building material. Likewise, the long-predicted revolution in computer
programming to be produced by the introduction of fourth- and fifth-generation
languages has not come to pass, almost certainly because their purported advan-
tages are outweighed by their manifest disadvantages. Third-generation languages
are still used for the bulk of the world’s programming. Algol 68 has been used as
a paradigm of third-generation languages for 32 years.
Each computer programming language has a primary purpose: C was developed
as a suitable tool in which to write the Unix operating system, Pascal was designed
specifically to teach computer programming to university students and Fortran was
designed to help engineers perform calculations. Where a programming language
is used for its design purpose, it performs that purpose admirably. Fortran, when
it first appeared, was a massive improvement over assembler languages which had
been used hitherto. Likewise, C, when restricted to its original purpose, is an
admirable tool, but it is a menace in the hands of a novice. However, novices do
not write operating systems.

According to the “Revised Report on the Algorithmic Language Algol 68” (see
the Bibliography), Algol 68 was “designed to communicate algorithms, to execute
them efficiently on a variety of different computers, and to aid in teaching them
to students”. Although this book has not been geared to any specific university
syllabus, the logical development of the exposition should permit its use in such
an environment. However, since no programming expertise is assumed, the book is
also suitable for home-study.

It is time to take a fresh approach to the teaching of computer programming.
This book breaks new ground in that direction. The concept of a variable (a term
borrowed from mathematics, applied to analogue computers and then, inappropri-
ately, to digital computers) has been replaced by the principle of value integrity:
in Algol 68, every value is a constant. All the usual paraphernalia of pointers,
statements and expressions is dispensed with. Instead, a whole new sublanguage is
provided for understanding the nature of programming.

It is a fallacy to say that progress consists of replacing the workable by the new.

Even now, despite the advent of curtain-walling, the brick is still the primary building material. Likewise, the long-predicted revolution in computer programming to be produced by the introduction of fourth- and fifth-generation languages has not come to pass, almost certainly because their purported advan- tages are outweighed by their manifest disadvantages.

so trueЪ!

ООП Алана Кея и пост это компьютерная революция которая ещё не произошла, а уже превратилась в компьютерную контрреволюцию.

потому что вот ни разу неочевидно вот это всё (особенно если ты layman), и

has not come to pass, almost certainly because their purported advantages are outweighed by their manifest disadvantages

so trueЪ!

как детектор всех тех, кто увидел за скобами не только лишь синтаксис (или наоборот, filter = Y-комбинатор естественного преобразования. и not filter = противоестественного :)) преобразования, лолЪ) – …

… скобканутый лисп-синтаксис отлично заходит.

это отличная идея же – отфильтровывать всех тех кто осилил лишь синтаксис прямо на входе же.

казалось бы, что могло пойти не так.

или же — отфильтровывать более других. которые способны увидеть не только лишь синтаксис.

anonymous
()
Ответ на: комментарий от qulinxao3

точнее, pame.pdf это введение в транспилятор Algol68toC

а вторая – в более классический алгол.

ортогональный язык программирования ортогонален уже в оглавлении книжки – во второй на десятой странице, сразу за FOREWORD оглавление в виде матрицы 7x9 :

TABLE OF CONTENTS

вот реально, там оглавление книжки про ортогональную архитектуру проектирования языка – и тоже ортогональное, этакий тензор.

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

в вазу поставить что ли. или хоть в картину и на стенку вешать.

ортогональностью понятий любоваться, ога.

anonymous
()
Ответ на: комментарий от anonymous
TABLE OF CONTENTS
PREFACE
FOREWORD
O. A VERY INFORMAL
INTRODUcnON
x.1. FUNDAMENTALS
I",. 1.1. FUNDAMENTALS
BASIC 1.1.1. Objects
CONCEPTS 1.1.2. Identifiers
1.1.2.1. Variable declarations
1.1.2.2. Assignation, collateral
elaboration
1.1.3. Phrases, serial and
collateral elaboration
1.1.4. Routines
1.1.5. Defining and applied
occurrences
1.1.6. Coercion
2.y. 2.1. PRIMITIVE
DECLARA- DECLARATIONS
TIONS 2.1.1. Primitives
2.1.2. Variable declarations
2.1.3. Sample declarations
3",. 3.1. SERIAL CLAUSES
CLAUSES 3.1.1. The declarations
3.1.2. The statements
3.1.3. The yield
3.1.4. Completers
3.1.5. Delimiters
4",. 4.1. PROCEDURES AND
ROUTINES OPERATORS
4.1.1. Standard prelude
routines
x. 1. FUNDAMENTALS
5",. 5.1. SIMPLE UNITS
UNITS
{
5.1.0.1. Coercends
5.y.0. 5.1.0.2. Coercion
Coercion 5.1.0.3. Dereferencing
5.1.0.4. Widening
5.y.1.
{
5.1.1.1. Denotations
Primaries
5.1.1.2. Applied identifiers
5.1.1.3. Casts
5.y.2.
{
5. I. 2. Secondaries
Secondaries
5.y.3.
{
5.1.3. Formulas
Tertiaries
5.y.4.
{
5.1.4.1. Assignations
Quartern- 5.1.4.2. skip
aries
6",. 6.1 OPERATORS
STANDARD 6.1.1. Monadic operators
PRELUDE 6.1.2. Dyadic operators
7.y. 7.1 FORMATLESS
TRANSPUT TRANSPUT
7.1.1. Formatless output
7.1.2. Forrnatless input
S.y. 8.1. SIMPLE EXAMPLES
EXAMPLES
APPENDICES APPENDIX I
Alternative representations
(
x.2. PROCEDURES AND x.3. OPERATIONS
NAMES
1.2. NAMES AND 1.3. SYMBOLS, MODES AND
DECLARERS OPERATORS
1:2.1. Ascription and assigna- 1.3.1., Representations
tion 1. 3.2. Symbols, bold words
1.2.2. Identity declarations and comments
1.2.2.1. Constants 1.3.3. Other declarations
1.2.2.2. Equivalences 1.3.3.1. Mode declarations
1.2.2.3. Local generators 1.3.3.2. Operation declarations
1.2.2.4. Variables and names 1.3.3.3. Priority declarations
1.2.2.5. Casts
1.2.3. The metanation MODE
1.2.3.1. proc modes
1.2.3.2. The supply of the
actual parameters
1.2.4. Summary
2.2. IDENTITY DECLARA- 2.3. MODE DECLARATIONS
TIONS
2.2.1. Identity declarations
2.2.2. Another look at
variable declarations
2.2.3. Initialised variable
declarations
3.2 CLOSED CLAUSES 3.3. BOLD WORDS
3.2.1. Ranges and reaches 3.3.1. Identification of mode
3.2.2. Scopes of names indications
3.2.3. Identification
3.2.4. ENCLOSED clauses
3.2.4. I. Closed clauses
3.2.4.2. Conditional clauses
3.2.4.3. Case clauses
4.2. PROCEDURE 4.3. OPERATION DECLARA-
DECLARATIONS TIONS
4.2.1. proc declarers 4.3.1. Priority declarations
4.2.2. Routines 4.3.2. Operation declarations
4.2.2.1. Routine texts 4.3.3. Identification of
4.2.2.2. Calling operators
4.2.2.3. Recursion
4.2.3. Scopes of routines
x.2. PROCEDURES AND x.3. OPERATIONS
NAMES
5.2 BALANCE AND CALL 5.3. skip
5.2.0.1. ENCLOSED clauses
and balancing
5.2.0.2. l>eproceduring
5.2.1. Procedure calls
5.2.3. nil
5.2.4. Assignations involving
names
6.2. CONSTANTS AND 6.3. ASSIGNING
PROCEDURES OPERATORS
6.2.1. Constants
6.2.2. Procedures
7.2. FILES
7.2.1. Channels, books and
7.3. skip
files
7.2.2. Environment enquiries
7.2.3. Procedures for opening
and closing
7.2.4. Position enquiries
7.2.5. Layout routines
8.2. PROCEDURE 8.3. EXAMPLES OF
EXAMPLES . OPERATORS
8.2.1. Easter 8.3.1. Parallel plus
APPENDIX 2
APPENDIX 3
Sample declarations
Glossary
1. Internal objects and modes
2. External objects
3. Technical terms
x.4. STRUCTURES x.5. MUl-TIPLE VALUES x.6. UNIONS x. 7. DISTINcnVE
FEATURES
<....>

в <…> как раз tl;dr-список перечисленных ортогональных понятий.

anonymous
()
Ответ на: комментарий от qulinxao3

ещё забавнее читать стандарт языка – даже не algol68-draft-report.pdf «DRAFT REPORT ON THE ALGORITHMIC LANGUAGE ALGOL 68», где заметки на полях и примеры в духе рацпредложения Джона МакКарти (алгольщикам) о лиспе и консах с метациклическими интерпретаторами; и линейном в памяти лиспом типа LispE (подробно не развёрнутом) — а например, algol68-revised-report.pdf где эпиграфы перед каждой главою в виде стихов или каламбуров и анекдотов.

и Making-Algol68/Algol68.tex – там от авторов языка в том самом комитете. есть много забавных моментов.

вообще, Jabberwocky, стихи и анекдоты прямо в тексте стандарта – это отлично, я щитаю.

… даже жаль, что современная молодёжь так не делает. скучные они стали, эти стандарты. не то что тогда. никаких тебе анекдотов в многоэтажных WG-грамматиках…

если у вас есть язык – то на нём надобно уметь выражаться. (с)

anonymous
()
Ответ на: комментарий от qulinxao3

алгол здесь при том, что вот это вот Identity declarations это относится к map filter reduce, и естественному преобразованию в identity = natural transformation.

а что относится к map not filter reduce и неестественному антипреобразованию ???

anonymous
()
Ответ на: комментарий от qulinxao3

есть мнение что наоборот, «рептильный кортекс» – это оптимизация чтобы не по верхним путям нейросети «второй импульсной» а по первой системе, бей-беги, эмолюционируй и не думай, экономь электроэнергию мозговой батарейки.

так и алгебра не отменила арифмеметику

понимай.прибытие: есть «гептапод А» и «гептапод Б». есть блиссимволика и трансценендальная алгебра. полный частично рекурсивный метациклический ифкуил головного мозга.

и непонятно как сконструированные онтологии «аналитического языка джона уинкиса».

а есть индейцы пираха , которые «не умеют» считать. и их язык не умеет в рекурсию.

говорят сразу тензорами, придумывая ритуальные шаманские песни как в «лисао» (например, песнь о ягуаре на другом берегу реки)

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

а не противоестественный. рекурсивно-абстрактный.

так что если эту нейросеть шейдеров пираха с автоматической дифференциацией штанов дипресёрчно глубинно оптимизировать – то там и появятся рекурсия, машины тьюринга процессор фон неймана брейнфак машины, или несколько стеков SECD и рекурсия лисп-машин с S-выражениями.

чтобы уже придумать «число» вообще, а не число чего-то конкретного надо было напрячь вторую имульсную, а не первую импульсную.

затем придумали в абстракции математики. третьего поколения яп.

когда-нибудь, может и в люденов трансгрессируют если напрягут себе невозбранно третью импульсную и в пятое поколения яп.

если «непонятно как сконструированые онтологии языка джона уилкиса» начнут ml-но обучать без учителя, и не символически а компутационно коннектом автоклассифицировать.

опять же, третья импульсная тут в символизме объяснительной модели.

у J. Pitrat (t, не c) – интересные идеи на этот счёт.

вот интересно, а на чём основаны более другие theory of mind?

у ли фей фей например, с векторыми (и гипертекстовыми) моделями theory of mind ?

у ментифлекса например, на основе гипотезы хомского. с другой стороны, есть индейцы пираха которые не умеют в гипотезу хомского (их просто никто не предупредил о нём, лолЪ)

чем отличается индейцев и – образованцев theory of mind в смысле операционной семантики денотатов, а не только языка?

и чем должна отличаться «третья импульсная» глубинно обученного нейрокортекса от «второй» а не только лишь первой?

anonymous
()
Ответ на: комментарий от qulinxao3

эмолюционируй := эмоционально эволюционируй.

умолюционируй := логическим умом эволюционируй.

а есть и более другие, глубинно-лобные или что-то ещё.

чем-то ещё что нелогическим, но умом.

anonymous
()
Ответ на: комментарий от qulinxao3

синтаксис это клава - скобковать это морзянить акордной

структурный редактор Sedit InterLisp medley это стенотип аккордной клавиатуры для емакса с педалями

аккорды := C-c C-c внутри кодоблоков оргмоды

C-c C-s, M-x compile, M-x org-babel-tangle аккорды для конпеляции

но это долго. аккордить надо acme-сковые интерклики мышкою для исполненения текущего-охватывающего следующе-предыдущего S-выражения.

скобковать надо сразу педалями в новые S-подвыражения в REPL-отладчик.

anonymous
()