RosettaCodeData/Task/Abbreviations-easy/00-TASK.txt
2023-07-01 13:44:08 -04:00

83 lines
4.9 KiB
Text

This task is an easier (to code) variant of the Rosetta Code task: <big> &nbsp; [[Abbreviations, simple]]</big>.
For this task, the following &nbsp; ''command table'' &nbsp; will be used:
Add ALTer BAckup Bottom CAppend Change SCHANGE CInsert CLAst COMPress COpy
COUnt COVerlay CURsor DELete CDelete Down DUPlicate Xedit EXPand EXTract Find
NFind NFINDUp NFUp CFind FINdup FUp FOrward GET Help HEXType Input POWerinput
Join SPlit SPLTJOIN LOAD Locate CLocate LOWercase UPPercase LPrefix MACRO
MErge MODify MOve MSG Next Overlay PARSE PREServe PURge PUT PUTD Query QUIT
READ RECover REFRESH RENum REPeat Replace CReplace RESet RESTore RGTLEFT
RIght LEft SAVE SET SHift SI SORT SOS STAck STATus TOP TRAnsfer Type Up
<!--
The unsorted list (above) was constructed to help ensure that program entries don't get tripped up by performing a left-to-right string comparison.
!-->
<!--
For the curious amongst you (and pack-rats of old publications, this is an old XEDIT command table; the sub-commands were extracted from:
Virtual Machine/
System Product
System Product
SP Editor
Command
Language
Reference
Summary
Release 4
SX24-5122-3
Fourth Edition (December 1984)
Information herein is extracted from
Virtual Machine/System Product System Product Editor Command and Macro Reference, SC24-5221.
This old version does not have some of the newer commands like QQuit and PQUIT, for instance,
and those commands that deal with DBCS (double-byte character set).
!-->
Notes concerning the above &nbsp; ''command table'':
::* &nbsp; it can be thought of as one long literal string &nbsp; (with blanks at end-of-lines)
::* &nbsp; it may have superfluous blanks
::* &nbsp; it may be in any case (lower/upper/mixed)
::* &nbsp; the order of the words in the &nbsp; ''command table'' &nbsp; must be preserved as shown
::* &nbsp; the user input(s) may be in any case (upper/lower/mixed)
::* &nbsp; commands will be restricted to the Latin alphabet &nbsp; (A ──► Z, &nbsp; a ──► z)
::* &nbsp; A valid abbreviation is a word that has:
:::* &nbsp; at least the minimum length of the number of capital letters of the word in the ''command table''
:::* &nbsp; compares equal (regardless of case) to the leading characters of the word in the ''command table''
:::* &nbsp; a length <u>not</u> longer than the word in the ''command table''
::::* &nbsp; '''ALT''', &nbsp; '''aLt''', &nbsp; '''ALTE''', &nbsp; and &nbsp; '''ALTER''' &nbsp; are all abbreviations of &nbsp; '''ALTer'''
::::* &nbsp; '''AL''', &nbsp; '''ALF''', &nbsp; '''ALTERS''', &nbsp; '''TER''', &nbsp; and &nbsp; '''A''' &nbsp; <u>aren't</u> valid abbreviations of &nbsp; '''ALTer'''
::::* &nbsp; The number of capital letters in &nbsp; '''ALTer''' &nbsp; indicates that any abbreviation for &nbsp; '''ALTer''' &nbsp; must be at least three letters
::::* &nbsp; Any word longer than five characters <u>can't</u> be an abbreviation for &nbsp; '''ALTer'''
::::* &nbsp; '''o''', &nbsp; '''ov''', &nbsp; '''oVe''', &nbsp; '''over''', &nbsp; '''overL''', &nbsp; '''overla''' &nbsp; are all acceptable abbreviations for &nbsp; '''Overlay'''
::* &nbsp; if there isn't any lowercase letters in the word in the ''command table'', &nbsp; then there isn't an abbreviation permitted
<!--
::* &nbsp; a Latin alphabet is used for this Rosetta Code task because it behaves well when letters are uppercased
!-->
;Task:
::* &nbsp; The command table needn't be verified/validated.
::* &nbsp; Write a function to validate if the user "words" &nbsp; (given as input) &nbsp; are valid &nbsp; (in the ''command table'').
::* &nbsp; If the word &nbsp; is &nbsp; valid, &nbsp; then return the full uppercase version of that "word".
::* &nbsp; If the word isn't valid, &nbsp; then return the lowercase string: &nbsp; <big> '''*error*''' </big> &nbsp; &nbsp; &nbsp; (7 characters).
::* &nbsp; A blank input &nbsp; (or a null input) &nbsp; should return a null string.
::* &nbsp; Show all output here.
;An example test case to be used for this task:
For a user string of:
riG rePEAT copies put mo rest types fup. 6 poweRin
the computer program should return the string:
RIGHT REPEAT *error* PUT MOVE RESTORE *error* *error* *error* POWERINPUT
{{Template:Strings}}
<br><br>