resAB := vysledky select: [ :v | v first & v second ] thenCollect: [ :v | v third ]. resAb := vysledky select: [ :v | v first & v second not ] thenCollect: [ :v | v third ]. resaB := vysledky select: [ :v | v first not & v second ] thenCollect: [ :v | v third ]. resab := vysledky select: [ :v | v first not & v second not ] thenCollect: [ :v | v third ].nebo třeba
select := [:val | vysledky select: [ :v | (v first: 2) = val ] thenCollect: [ :v | v third ] ]. resAB := select value: #(true true). resAb := select value: #(true false). resaB := select value: #(false true). resab := select value: #(false false).nebo imperativněji, blíže Vašemu řešení:
resAB := OrderedCollection new. resAb := OrderedCollection new. resaB := OrderedCollection new. resab := OrderedCollection new. vysledky do: [ :v | (v first & v second) ifTrue: [ resAB add: v third ]. (v first & v second not) ifTrue: [ resAb add: v third ]. (v first not & v second) ifTrue: [ resaB add: v third ]. (v first not & v second not) ifTrue: [ resab add: v third ] ].Příkladů, na kterých se dá ukázat, že právě ten a ten určitý jazyk je nejlepší, se dá vymyslet hodně. Podobně by se dalo třeba zadat naimplementovat tak základní věc, jako singleton (jedináček), nebo nějaký příklad, kde se dá skvěle využít dynamická dědičnost, a Python by proti Selfu vypadal jak malej do školky (což by, mimochodem, nebyl zcela mylný závěr ;-).