Writing algorithms in Lojban
Jump to navigation
Jump to search
Attempt at translating a piece of C code to Lojban
C code
char* str_fill(char string[], char filling, uint_t count) { if (string) { if (!count) while(string[count]) count++; string[count] = '\0'; while (count--) string[count] = filling; } return string; }
English translation
Function str_fill returning char pointer, taking parameters: 'string', of type char array; 'filling', of type char; 'count', of type uint_t. Variable list: empty. Instruction list: if 'string' is not equal to 0: > if 'count' is equal to 0: > > as long as the offset number 'count' of the array 'string' is not equal to 0: > > > we add 1 to 'count' > we set the offset number 'count' of the array 'string' to 0 > as long as 'count' is not equal to 0: > > we substract 1 from 'count' > > we copy 'filling' into the offset number 'count' of the array 'string' we return to the calling function giving the value 'string' End of function.
Lojban translation (to be improved)
Attempt by Danr
to ro da zo'u la'e da du ca'e lo se judri be da toi la .styrfil. cu pruce la .strin. poi judri lo lerfu ku'o ce'o la .filin. poi lerfu ku'o ce'o la .kaunt. poi mulna'u ku'o la .strin. poi ke'u judri lo lerfu ku'o lo pu'u va'o lo nu la'e la .strin. na du li no kei ba gi va'o lo nu la .kaunt. na du li no kei ze'a lo nu la'e lo sumji be la .strin. bei la .kaunt. na du li no kei ko setca fi la .kaunt. fe lo sumji be la .kaunt. bei li pa gi ba gi ko setca fi la'e lo sumji be la .strin. bei la .kaunt. fe li no gi ze'a lo nu ba gi ko setca fi la .kaunt. fe lo se sumji be la .kaunt. bei li pa gi la .kaunt. na du li pa kei ko setca fi la'e lo sumji be la .strin. bei la .kaunt. fe la .filin.
mi milxe lo ka se mansa ge tu'a zo ze'a gi tu'a zo'oi .return.
Second attempt by Ilmen
mi do minde lo nu ... lo si'o clubixlerpoi zo'u ro da ro de ro di ro di xi re zo'u go da de di di xi re clubixlerpoi gi da goi la lerpoi de goi la selclu di goi la selzilkancu di xi re goi la selpra zo'u lerpoi fa la lerpoi gi'e lerfu fa la selclu gi'e namcu fa la selzilkancu ju'ei go la lerpoi cu dubyfrica li no gi go la selzilkancu cu dubdu'i li no gi me'oi .while. fa xu'u lo momkai be la selzilkancu bei la lerpoi cu nonmau vau xu'u zo selzilkancu li pa ka'irze'a vau ju'ei ba bo li no momkai la selzilkancu la lerpoi ju'ei ba bo me'oi .while. fa xu'u la selzilkancu cu nonmau vau xu'u zo selzilkancu li pa ka'irjdika ju'ei ba bo momkai fa la selclu la selzilkancu la lerpoi vau ju'ei ba bo la selpra la lerpoi cu mintu
First attempt by Ilmen
ni'o ni'o ca'e pruce fa la lerpoiclugau fo di'e fe la lerpoi noi me'oi .char. judri ce'o la selclu noi me'oi .char. ce'o la selzilkancu noi me'oi .uint_t. fi lo me'oi .char. judri ni'o to ve pruce liste toi la lerpoi na du li no .i jo tu'e { > la selzilkancu cu du li no .i jo tu'e { > > lo me la selzilkancu moi be la lerpoi na du li no .i jo > > ko'oi rapli co'u lo nu ja'a go'i ku fa lo nu > > ko'oi la selzilkancu cu dubze'a li pa > } tu'u > .i la selzilkancu na du li no .i jo > ko'oi rapli co'u lo nu ja'a go'i ku fa lo nu > ge ko'oi la selzilkancu cu dubjdika li pa > gi ko'oi lo me la selzilkancu moi be la lerpoi cu fukpi la selclu } tu'u .i ko'oi zilxru gi'e pruce fi la lerpoi
To be improved:
1) {la broda cu du li re} is probably not right; perhaps {la'e la broda} would be better for refering to the variable value.
2) "jo" is perhaps wrong for "if...then".
3) {dubze'a} is probably nonsensical, it should be replaced with something else. :)