[Jprogramming] Translating BASIC into J
Aai
agroeneveld400 at gmail.com
Fri Nov 30 17:31:14 UTC 2012
I use this for the database conversion:
DB=: ({.,<@}:@(;: inv@}.))"1 ;:;. _2 (0 :0)
1 CREDO
11 IN
111 UNUM
11 DEUM
...
32 VITAM
3211 VENTURI
0 AMEN
)
Following June Kim's suggestion about AMEN.
_4 {. v
┌──┬─────┬───────┬────┐
│ET│VITAM│VENTURI│AMEN│
└──┴─────┴───────┴────┘
_4 {. k
┌──┬──┬────┬─┐
│39│32│3211│0│
└──┴──┴────┴─┘
Using June Kim's search:
search=:*./@(+./)@( [ (= , '0'&=@,: )({.~ #)~ )
examples (not thoroughly tested):
;: inv v#~k search every < '13521'
CREDO IN SPIRITUM QUI CUM PATRE GLORIFICATUR AMEN
;: inv v#~k search every < '11'
CREDO IN DEUM AMEN
;: inv v#~k search every < '33'
EXPECTO AMEN
;: inv v#~k search every < '13500'
CREDO IN SPIRITUM QUI CUM PATRE ET FILIO SIMUL ADORATUR ET GLORIFICATUR AMEN
;: inv v#~k search every < '01'
CREDO IN DEUM CONFITEOR BAPTISMA ET EXPECTO RESURRECTIONEM AMEN
On 30-11-12 17:32, Bo Jacoby wrote:
> Hi Aai. Thanks. I did, but still:
>
> 22{. DB
> 1 CREDO
> 11 IN
> 111 UNUM
> _18{.DB NB. it is necessary to put a blank character before AMEN.
> 321 SÆCULI
> AMEN
>
> $ DB
> 1926
>
>
> 'key val'=: <"1 |: >({. , ([,' ',])&.>/@:}.)@:(' '&cut) each LF cut DB
> |domain error
> | 'key val'=:<"1|:> ({.,([,' ',])&.>/@:}.)@:(' '&cut)each LF cut DB
>
>
> 3 {. cut DB
> ┌─┬────────┬──────┐
> │1│CREDO 11│IN 111│
> └─┴────────┴──────┘
>
>
> The line number should be before the word.
>
>
> - Bo
>
>
>> ________________________________
>> Fra: Aai <agroeneveld400 at gmail.com>
>> Til: programming at jsoftware.com
>> Sendt: 15:21 fredag den 30. november 2012
>> Emne: Re: [Jprogramming] Translating BASIC into J
>>
>> Hi Bo, you need to feed the animal, e.g.
>>
>> DB=: 0 :0
>> 1 CREDO
>> 11 IN
>> 111 UNUM
>> ...
>> )
>>
>> and then:
>>
>> 'key val'=: <"1 |: >({. , ([,' ',])&.>/@:}.)@:(' '&cut) each LF cut DB
>>
>>
>>
>> On 30-11-12 15:03, Bo Jacoby wrote:
>>> Hi June. I can't make it work.
>>> require 'strings'
>>> cut
>>> ' '&$: :([: -.&a: <;._2@,~)
>>> 'key val'=: <"1 |: >({. , ([,' ',])&.>/@:}.)@:(' '&cut) each LF cut
>>> |domain error
>>> | 'key val'=:<"1|:> ({.,([,' ',])&.>/@:}.)@:(' '&cut)each LF cut
>>> - Bo
>>>
>>>
>>>
>>>
>>>> ________________________________
>>>> Fra: June Kim (김창준) <juneaftn at gmail.com>
>>>> Til: programming at jsoftware.com
>>>> Sendt: 9:30 fredag den 30. november 2012
>>>> Emne: Re: [Jprogramming] Translating BASIC into J
>>>>
>>>> I forgot to mention that cut is from strings.
>>>>
>>>> Hence, you should
>>>>
>>>> require 'strings'
>>>>
>>>> first, before running my other lines.
>>>>
>>>> On Wed, Nov 28, 2012 at 2:43 PM, June Kim (김창준) <juneaftn at gmail.com> wrote:
>>>>
>>>>> Hi Bo,
>>>>>
>>>>> Firstly on the database file:
>>>>>
>>>>> I suppose there is no blank line in between the lines of the file.
>>>>> I suppose AMEN at the end was actually, 0 AMEN, instead.
>>>>>
>>>>> Now a quick and dirty version -- notice that this doesn't fully implement
>>>>> the basic code exactly, but you'll get the key idea.
>>>>>
>>>>> 'key val'=: <"1 |: >({. , ([,' ',])&.>/@:}.)@:(' '&cut) each LF cut
>>>>> 1!:1<jpath'~user/temp/CREDO' NB. I put the CREDO file here
>>>>> search=:*./@(+./)@( [ (= , '0'&=@,: ) ({.~ #)~ )
>>>>> val#~key search every < '13522' NB. query for 13522
>>>>>
>>>>>
>>>>> June
>>>>>
>>>>>
>>>>> On Tue, Nov 27, 2012 at 3:31 PM, Bo Jacoby <bojacoby at yahoo.dk> wrote:
>>>>>
>>>>>> Dear J'ers.
>>>>>>
>>>>>> At the Norddata conference in Göteborg in the summer 1989 I gave a
>>>>>> lecture (in Danish) on Ultraflexible Database Structure and Artificial
>>>>>> Catholicism.
>>>>>>
>>>>>>
>>>>>> It contained this 8-liner in BASIC.
>>>>>>
>>>>>> 1 INPUT;C$: IF C$="" THEN END
>>>>>> 2 OPEN "CREDO" FOR INPUT AS 1: PRINT":";
>>>>>> 3 IF EOF(1) THEN CLOSE: PRINT: GOTO 1
>>>>>> 4 LINE INPUT#1,A$: B$=C$
>>>>>> 5 IF A$=""THEN A%=-1 ELSE A%=ASC(A$)-48: A$=MID$(A$,2)
>>>>>> 6 IF B$=""THEN B%=-1 ELSE B%=ASC(B$)-48: B$=MID$(B$,2)
>>>>>> 7 IF A%<0 THEN PRINT" ";A$;: GOTO 3
>>>>>> 8 IF A%=0 OR B%=0 OR A%=B% THEN 5 ELSE 3
>>>>>>
>>>>>> I have not yet been able to translate this program into J, mainly (I
>>>>>> think) because I have no experience in reading textfiles from J. I request
>>>>>> your assistance! The line numbers in the file must be separated from the
>>>>>> rest of the lines. The line numbers may be padded to the right with zeroes.
>>>>>>
>>>>>>
>>>>>> The program is a database browser. The question put to the program is a
>>>>>> number, and the answer from the program consists of the lines in the
>>>>>> database having numbers compatible to that of the question. Like this:
>>>>>>
>>>>>> 1: CREDO AMEN
>>>>>> 2: CONFITEOR AMEN
>>>>>> 3: EXPECTO AMEN
>>>>>> 0: CREDO CONFITEOR ET EXPECTO AMEN
>>>>>>
>>>>>> The digit zero is wild card character. A zero in the question indicate
>>>>>> that the answer has many words, and zero in a word in the database indicate
>>>>>> that this word answers many questions. So "AMEN" is included in all
>>>>>> answers. Like this:
>>>>>>
>>>>>> 11: CREDO IN DEUM AMEN
>>>>>> 12: CREDO IN JESUM AMEN
>>>>>> 13: CREDO IN SPIRITUM AMEN
>>>>>> 14: CREDO ECCLESIAM AMEN
>>>>>> 15: CREDO AMEN
>>>>>> 10: CREDO IN DEUM ET IN JESUM ET IN SPIRITUM ET ECCLESIAM AMEN
>>>>>> 21: CONFITEOR BAPTISMA AMEN
>>>>>> 22: CONFITEOR AMEN
>>>>>> 31: EXPECTO RESURRECTIONEM AMEN
>>>>>> 32: EXPECTO VITAM AMEN
>>>>>> 33: EXPECTO AMEN
>>>>>> 30: EXPECTO RESURRECTIONEM ET VITAM AMEN
>>>>>> 01: CREDO IN DEUM CONFITEOR BAPTISMA ET EXPECTO RESURRECTIONEM AMEN
>>>>>> 13500: CREDO IN SPIRITUM QUI CUM PATRE ET FILIO SIMUL ADORATUR ET
>>>>>> GLORIFICATUR AMEN
>>>>>>
>>>>>> 13510: CREDO IN SPIRITUM QUI CUM PATRE ET FILIO SIMUL ADORATUR AMEN
>>>>>> 13520: CREDO IN SPIRITUM QUI CUM PATRE ET FILIO SIMUL GLORIFICATUR AMEN
>>>>>> 13501: CREDO IN SPIRITUM QUI CUM PATRE ADORATUR ET GLORIFICATUR AMEN
>>>>>> 13502: CREDO IN SPIRITUM QUI CUM FILIO ADORATUR ET GLORIFICATUR AMEN
>>>>>> 13511: CREDO IN SPIRITUM QUI CUM PATRE ADORATUR AMEN
>>>>>> 13512: CREDO IN SPIRITUM QUI CUM FILIO ADORATUR AMEN
>>>>>> 13521: CREDO IN SPIRITUM QUI CUM PATRE GLORIFICATUR AMEN
>>>>>> 13522: CREDO IN SPIRITUM QUI CUM FILIO GLORIFICATUR AMEN
>>>>>>
>>>>>> The database is this.
>>>>>> 1 CREDO
>>>>>> 11 IN
>>>>>> 111 UNUM
>>>>>> 11 DEUM
>>>>>> 112 PATREM
>>>>>> 1121 OMNIPOTENTEM
>>>>>> 113 FACTOREM
>>>>>> 1131 CÆLI
>>>>>> 1139 ET
>>>>>> 1132 TERRÆ
>>>>>> 11331 VISIBILIUM
>>>>>> 1133 OMNIUM
>>>>>> 11339 ET
>>>>>> 11332 INVISIBILIUM
>>>>>> 19 ET
>>>>>> 12 IN
>>>>>> 1211 UNUM
>>>>>> 1211 DOMINUM
>>>>>> 12 JESUM
>>>>>> 1211 CHRISTUM
>>>>>> 1212 FILIUM
>>>>>> 1212 DEI
>>>>>> 12121 UNIGENITUM
>>>>>> 1219 ET
>>>>>> 1213 EX
>>>>>> 1213 PATRE
>>>>>> 1213 NATUM
>>>>>> 12131 ANTE
>>>>>> 121311 OMNIA
>>>>>> 12131 SÆCULA
>>>>>> 1221 DEUM
>>>>>> 12211 DE
>>>>>> 12211 DEO
>>>>>> 1222 LUMEN
>>>>>> 12221 DE
>>>>>> 12221 LUMINE
>>>>>> 1223 DEUM
>>>>>> 12231 VERUM
>>>>>> 12232 DE
>>>>>> 12232 DEO
>>>>>> 122321 VERO
>>>>>> 1231 GENITUM
>>>>>> 12311 NON
>>>>>> 12311 FACTUM
>>>>>> 1232 CONSUBSTANTIALEM
>>>>>> 1232 PATRI
>>>>>> 12321 PER
>>>>>> 12321 QUEM
>>>>>> 12321 OMNIA
>>>>>> 12321 FACTA
>>>>>> 12321 SUNT
>>>>>> 124 QUI
>>>>>> 124101 PROPTER
>>>>>> 124101 NOS
>>>>>> 12410101 HOMINES
>>>>>> 124109 ET
>>>>>> 124102 PROPTER
>>>>>> 12410201 NOSTRAM
>>>>>> 124102 SALUTEM
>>>>>> 12411 DESCENDIT
>>>>>> 1241101 DE
>>>>>> 1241101 CÆLIS
>>>>>> 12419 ET
>>>>>> 12412 INCARNATUS
>>>>>> 12412 EST
>>>>>> 1241201 DE
>>>>>> 1241201 SPIRITU
>>>>>> 124120101 SANCTO
>>>>>> 1241202 EX
>>>>>> 1241202 MARIA
>>>>>> 124120201 VIRGINE
>>>>>> 12419 ET
>>>>>> 1241301 HOMO
>>>>>> 12413 FACTUS
>>>>>>
>>>>>> 12413 EST
>>>>>> 124211 CRUCIFIXUS
>>>>>> 1242101 ETIAM
>>>>>> 1242101 PRO
>>>>>> 1242101 NOBIS
>>>>>> 1242102 SUB
>>>>>> 1242102 PONTIO
>>>>>> 1242102 PILATO
>>>>>> 124212 PASSUS
>>>>>> 124219 ET
>>>>>> 124213 SEPULTUS
>>>>>> 12421 EST
>>>>>> 12429 ET
>>>>>> 12422 RESURREXIT
>>>>>> 124221 TERTIA
>>>>>> 124221 DIE
>>>>>> 124222 SECUMDUM
>>>>>> 124222 SCRIPTURAS
>>>>>> 12429 ET
>>>>>> 12423 ASCENDIT
>>>>>> 124231 IN
>>>>>> 124231 CÆLUM
>>>>>> 12424 SEDET
>>>>>> 124241 AD
>>>>>> 124241 DEXTERAM
>>>>>> 124241 PATRIS
>>>>>> 12429 ET
>>>>>> 124251 ITERUM
>>>>>> 12425 VENTURUS
>>>>>>
>>>>>> 12425 EST
>>>>>> 124252 CUM
>>>>>> 124252 GLORIA
>>>>>> 124253 JUDICARE
>>>>>> 1242531 VIVOS
>>>>>> 1242539 ET
>>>>>> 1242532 MORTUOS
>>>>>> 125 CUJUS
>>>>>> 125 REGNI
>>>>>> 125 NON
>>>>>> 125 ERIT
>>>>>> 125 FINIS
>>>>>> 19 ET
>>>>>> 13 IN
>>>>>> 13 SPIRITUM
>>>>>> 131 SANCTUM
>>>>>> 132 DOMINUM
>>>>>> 139 ET
>>>>>> 133 VIVIFICANTEM
>>>>>> 134 QUI
>>>>>> 134 EX
>>>>>> 1341 PATRE
>>>>>> 1342 FILIO
>>>>>> 1349 QUE
>>>>>> 134 PROCEDIT
>>>>>> 135 QUI
>>>>>> 135 CUM
>>>>>> 13501 PATRE
>>>>>> 13509 ET
>>>>>> 13502 FILIO
>>>>>> 13509 SIMUL
>>>>>> 1351 ADORATUR
>>>>>> 1359 ET
>>>>>> 1352 GLORIFICATUR
>>>>>> 136 QUI
>>>>>> 136 LOCUTUS EST
>>>>>> 1361 PER
>>>>>> 1361 PROPHETAS
>>>>>> 19 ET
>>>>>> 141 UNAM
>>>>>> 142 SANCTAM
>>>>>> 143 CATHOLICAM
>>>>>> 149 ET
>>>>>> 144 APOSTOLICAM
>>>>>> 14 ECCLESIAM
>>>>>> 2 CONFITEOR
>>>>>> 211 UNUM
>>>>>> 21 BAPTISMA
>>>>>> 212 IN
>>>>>> 212 REMISSIONEM
>>>>>> 2121 PECCATORUM
>>>>>> 9 ET
>>>>>> 3 EXPECTO
>>>>>> 31 RESURRECTIONEM
>>>>>> 311 MORTUORUM
>>>>>> 39 ET
>>>>>> 32 VITAM
>>>>>> 3211 VENTURI
>>>>>> 321 SÆCULI
>>>>>> AMEN
>>>>>> ----------------------------------------------------------------------
>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>>>
>>>> ----------------------------------------------------------------------
>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>
>>>>
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>> --
>> Met vriendelijke groet,
>> @@i = Arie Groeneveld
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
--
Met vriendelijke groet,
@@i = Arie Groeneveld
More information about the Programming
mailing list