Palindrome detection: Difference between revisions
Content added Content deleted
No edit summary |
Not a robot (talk | contribs) (Add MACRO-11) |
||
Line 3,195: | Line 3,195: | ||
palindro(`ingirumimusnocteetconsumimurigni') |
palindro(`ingirumimusnocteetconsumimurigni') |
||
palindro(`this is not palindrome')</syntaxhighlight> |
palindro(`this is not palindrome')</syntaxhighlight> |
||
=={{header|MACRO-11}}== |
|||
<syntaxhighlight lang="macro11"> .TITLE PALIN |
|||
.MCALL .GTLIN,.PRINT,.EXIT |
|||
PALIN:: .GTLIN #INBUF ; READ INPUT |
|||
MOV #INBUF,R0 |
|||
TSTB (R0) ; END OF INPUT? |
|||
BEQ 3$ |
|||
JSR PC,EPALIN ; CHECK (EXACT) PALINDROME |
|||
BNE 1$ |
|||
.PRINT #4$ |
|||
BR PALIN |
|||
1$: MOV #INBUF,R0 ; CHECK INEXACT PALINDROME |
|||
JSR PC,IPALIN |
|||
BNE 2$ |
|||
.PRINT #5$ |
|||
BR PALIN |
|||
2$: .PRINT #6$ ; NOT A PALINDROME AT ALL |
|||
BR PALIN |
|||
3$: .EXIT |
|||
4$: .ASCIZ /EXACT PALINDROME/ |
|||
5$: .ASCIZ /INEXACT PALINDROME/ |
|||
6$: .ASCIZ /NOT A PALINDROME/ |
|||
.EVEN |
|||
; IS STRING AT R0 AN EXACT PALINDROME? |
|||
; ZERO FLAG SET IF TRUE |
|||
EPALIN: MOV R0,R1 |
|||
1$: TSTB (R1)+ ; FIND END OF STRING |
|||
BNE 1$ |
|||
DEC R1 |
|||
2$: CMPB (R0)+,-(R1) ; SCAN BACKWARDS AND FORWARDS |
|||
BNE 4$ ; NOT PALINDROME? |
|||
CMP R0,R1 ; DONE YET? |
|||
BLT 2$ |
|||
3$: CLR R1 |
|||
4$: RTS PC |
|||
; IS STRING AT R0 AN INEXACT PALINDROME? |
|||
IPALIN: MOV #3$,R1 ; COPY TO BUFFER |
|||
BR 2$ |
|||
1$: BICB #40,R2 ; MAKE UPPERCASE IF LETTER |
|||
CMPB R2,#101 ; < A = DISREGARD |
|||
BLT 2$ |
|||
CMPB R2,#132 ; > Z = DISREGARD |
|||
BGT 2$ |
|||
MOVB R2,(R1)+ ; STORE IN BUFFER |
|||
2$: MOVB (R0)+,R2 ; GET CHARACTER |
|||
BNE 1$ ; END? |
|||
CLRB (R1) ; ZERO TERMINATE BUFFER |
|||
MOV #3$,R0 ; NOW SEE IF RESULT IS EXACT PALINDROME |
|||
BR EPALIN |
|||
3$: .BLKB 200 ; BUFFER |
|||
INBUF: .BLKB 200 |
|||
.END PALIN</syntaxhighlight> |
|||
{{out}} |
|||
<pre>.palin racecar |
|||
EXACT PALINDROME |
|||
.palin raceCAR |
|||
INEXACT PALINDROME |
|||
.palin rosetta |
|||
NOT A PALINDROME</pre> |
|||
=={{header|Maple}}== |
=={{header|Maple}}== |