<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Programming Challenge in Visual LISP, AutoLISP and General Customization Forum</title>
    <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736650#M53024</link>
    <description>&lt;P&gt;Here is my digression about what &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/411413"&gt;@dbroad&lt;/a&gt; stated in post #21, about avoiding or minimizing&amp;nbsp; of variable usage.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://norvig.com/" target="_blank" rel="noopener"&gt;Peter Norvig&lt;/A&gt;, a highly respected name in Lisp communities, has stated many times that directly passing result from one function to another is one of the best ways to shorten execution times of Lisp programs. He also stated that in its essence Lisp code is supposed to be written that way. Less time we use variables, memory usage is more effective and also garbage collector is lot less polluted. Historically, when amounts of available memory were scarce, it has had huge impact on execution time. Drawback of this code style is harder code readability for less experienced programmers.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 04 Nov 2021 20:44:29 GMT</pubDate>
    <dc:creator>hak_vz</dc:creator>
    <dc:date>2021-11-04T20:44:29Z</dc:date>
    <item>
      <title>Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735297#M53001</link>
      <description>&lt;P&gt;It is claimed that the sentence "The quick brown fox jumped over the lazy dog." contains at least one of all the letters in the English alphabet.&amp;nbsp; Case doesn't matter.&lt;/P&gt;
&lt;P&gt;Your challenge is to post a function that proves or disproves that claim.&amp;nbsp; It should take the sentence as a string and return T or nil, e.g.&lt;/P&gt;
&lt;P&gt;(defun true? (str)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; (and&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; (= (type str) 'STR)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; (vl-yes-they-are-all-there str)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; )&lt;/P&gt;
&lt;P&gt;)&lt;/P&gt;
&lt;P&gt;Have fun, OR ELSE!&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 12:21:20 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735297#M53001</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T12:21:20Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735372#M53002</link>
      <description>&lt;P&gt;T/nil. Not listing missing ones. ignores the case.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;(defun vl-yes-they-are-all-there ( str / l)
  (foreach e (vl-string-&amp;gt;list (strcase str))
    (and (not (vl-position e l))
	 (&amp;lt; 64 e 91)
	 (setq l (cons e l))))
  (= 2015 (apply '+ l)))
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&amp;gt;&amp;gt; (true? "The quick brown fox jumped over the lazy dog.")
&amp;gt;&amp;gt; &lt;STRONG&gt;nil
&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&amp;gt;&amp;gt; (true? "The quick brown fox jumps over the lazy dog.")
&amp;gt;&amp;gt; &lt;STRONG&gt;T
&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 13:07:10 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735372#M53002</guid>
      <dc:creator>ВeekeeCZ</dc:creator>
      <dc:date>2021-11-04T13:07:10Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735415#M53003</link>
      <description>&lt;P&gt;jump&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;s&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 12:57:55 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735415#M53003</guid>
      <dc:creator>Kent1Cooper</dc:creator>
      <dc:date>2021-11-04T12:57:55Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735450#M53004</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun AllLetters (str / chr missing)
  (setq chr 64)
  (while (and (not missing) (&amp;lt; chr 90))
    (setq missing (not (vl-string-position (setq chr (1+ chr)) (strcase str))))
  ); while
  (not missing)
)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Command: (allletters "The quick brown fox jumps over the lazy dog.")&lt;BR /&gt;T&lt;/P&gt;
&lt;P&gt;Command: (allletters "The quick brown fox jumped over the lazy dog.")&lt;BR /&gt;nil&lt;/P&gt;
&lt;P&gt;Command: (allletters "Pack my box with five dozen liquor jugs.")&lt;BR /&gt;T&lt;/P&gt;
&lt;P&gt;Command: (allletters "test")&lt;BR /&gt;nil&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In a way, it has the same kind of benefit of&lt;STRONG&gt;&lt;FONT face="courier new,courier" color="#000000"&gt; (cond) &lt;/FONT&gt;&lt;/STRONG&gt;compared to a series of&lt;STRONG&gt;&lt;FONT face="courier new,courier" color="#000000"&gt; (if) &lt;/FONT&gt;&lt;/STRONG&gt;functions -- it checks for the presence of letters &lt;EM&gt;only until it finds one missing&lt;/EM&gt;, and then doesn't need to go any further.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 14:01:26 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735450#M53004</guid>
      <dc:creator>Kent1Cooper</dc:creator>
      <dc:date>2021-11-04T14:01:26Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735578#M53005</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1779365"&gt;@ВeekeeCZ&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/69526"&gt;@Kent1Cooper&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I expected that you two would rise to the occasion, BUT&lt;/P&gt;
&lt;P&gt;neither of you tested to see if str was a 'STR!&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":angry_face:"&gt;😠&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Kent gets credit for remembering the the correct sentence ("jumps" not "jumped") and proving both.&lt;/P&gt;
&lt;P&gt;He also gets extra credit for remembering the other famous sentence.&lt;/P&gt;
&lt;P&gt;BUT he used an AutoLisp function name as a symbol (chr), but that's because he knew it was okay as long as it was local.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sorry, BeekeeCZ, but Kent leads so far.&lt;/P&gt;
&lt;P&gt;Still hoping to hear from gurus like&amp;nbsp;@Hak_vz, @ronjonp, @pbejse, &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/411413"&gt;@dbroad&lt;/a&gt;&amp;nbsp;et al.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 13:52:17 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735578#M53005</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T13:52:17Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735650#M53006</link>
      <description>&lt;P&gt;The converse version, checking that each letter is present so far, rather than whether each one is missing:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun AllLetters (str / chr# sofar)
  (setq chr# 64 sofar T)
  (while (and sofar (&amp;lt; chr# 90))
    (setq sofar (vl-string-position (setq chr# (1+ chr#)) (strcase str)))
  ); while
  (numberp sofar)
)&lt;/LI-CODE&gt;
&lt;P&gt;[And I fixed the variable name, but didn't add a check on the (type) of the 'str' argument.]&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The (numberp) "wrapper" can be removed if you don't mind the non-nil return being a number, rather than T.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 14:15:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735650#M53006</guid>
      <dc:creator>Kent1Cooper</dc:creator>
      <dc:date>2021-11-04T14:15:14Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735759#M53008</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun has_all_letters (str / a b c d e dec cnt)
	(cond 
		((= (type str) 'STR)
			(setq dec (cdr(vl-sort (vl-string-&amp;gt;list (strcase str)) '&amp;lt;)))
			(cond 
				((= (length dec) 26)(setq a T) (princ "\nThis sentence has 26 letters - TRUE"))
				(T (princ "\nThis sentence doesn't have 26 letters - FALSE"))
			)
			(cond 
				((= (chr (car dec)) "A")(setq b T) (princ "\nFirst alhabetically ordered letter is A - TRUE"))
				((/= (chr (car dec)) "A")(princ "\nFirst alhabetically ordered letter is not A  - FALSE"))
			)
			(cond 
				((= (chr (last dec)) "Z")(setq c T) (princ "\nLast alhabetically ordered letter is Z - TRUE"))
				((/= (chr (last dec)) "Z")(princ "\nLast alhabetically ordered letter is not Z  - FALSE"))
			)
			(setq 
				d T
				cnt -1
			)
			(while (and (and d)(&amp;lt; (setq cnt (1+ cnt))(1- (length dec))))
				(if (/= (- (nth (1+ cnt) dec)(nth cnt dec)) 1) (setq d nil))
			)
			(cond
				((and d)(princ "\nAll letters in this sentence are in sequence - TRUE"))
				(T (princ "\nNot all letters in this sentence are in sequence - FALSE"))
			)
			(setq e (apply 'and (list a b c d)))
			(cond
				 ((not e)(princ "\n\nAll letters from English alphabet are not present - final result:_______ FALSE"))
				 ((and e)(princ "\n\nAll letters from English alphabet are here - final result: _______TRUE"))
			)
		)	
		(T (princ "\nFunction argument is not a string!"))
	)
(princ)
)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Command: (setq str "The quick brown fox jumped over the lazy dog")
Command: (has_all_letters str)
This sentence doesn't have 26 letters - FALSE
First alhabetically ordered letter is A - TRUE
Last alhabetically ordered letter is Z - TRUE
Not all letters in this sentence are in sequence - FALSE
All letters from English alphabet are not present - final result:_______ FALSE&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;Command: (setq str "The quick brown fox jumps over the lazy dog")
Command: (has_all_letters str)
This sentence has 26 letters - TRUE
First alhabetically ordered letter is A - TRUE
Last alhabetically ordered letter is Z - TRUE
All letters in this sentence are in sequence - TRUE
All letters from English alphabet are here - final result: _______TRUE&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 14:48:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735759#M53008</guid>
      <dc:creator>hak_vz</dc:creator>
      <dc:date>2021-11-04T14:48:40Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735813#M53009</link>
      <description>&lt;P&gt;If you want it to tell you which letter(s) is/are missing:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun AllLetters (str / chr# sofar)
  (setq chr# 64 missing "")
  (while (&amp;lt; chr# 90)
    (if (not (vl-string-position (setq chr# (1+ chr#)) (strcase str)))
      (setq missing (strcat missing (chr chr#)))
    ); if
  ); while
  (prompt
    (if (= missing "")
      "\nAll letters present." ; then
      (strcat "\nMissing letter(s): " missing "."); else
    ); if
  ); prompt
  (princ)
)&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 04 Nov 2021 15:04:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735813#M53009</guid>
      <dc:creator>Kent1Cooper</dc:creator>
      <dc:date>2021-11-04T15:04:50Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735869#M53010</link>
      <description>&lt;P&gt;Since you're calling the test function from another function that already tests whether or not the argument is a string, that hardly seems necessary.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun test (str / lst i)
(setq lst (vl-string-&amp;gt;list (strcase str)))
(setq i 65)
(while (and (&amp;lt; i 91)
	    (vl-position i lst))
  (setq i (1+ i)))
(= i 91)
)&lt;/LI-CODE&gt;
&lt;P&gt;You could also do a precheck.&lt;/P&gt;
&lt;P&gt;(&amp;gt;=(length lst) 26))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 15:30:45 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735869#M53010</guid>
      <dc:creator>dbroad</dc:creator>
      <dc:date>2021-11-04T15:30:45Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735912#M53011</link>
      <description>&lt;P&gt;That's very close to my first attempt...&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun @Anonymous? (str / n ok)
  (and
    (= (type str) 'STR)
    (setq str (vl-string-&amp;gt;list (strcase str)) n 64 ok T)
    (while (and ok (&amp;lt; n 90))
      (setq ok (vl-position (setq n (1+ n)) str))
    )
    (boundp (quote ok))
  )
)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;so I guess your 2nd version is an improvement.&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":beaming_face_with_smiling_eyes:"&gt;😁&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Here is my 2nd attempt:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun istrue (str / chrs)
  (and
    (= (type str) 'STR)
    (setq chrs '(90))
    (repeat (- 90 65)(setq chrs (cons (1- (car chrs)) chrs)))
    (not (vl-position nil (mapcar '(lambda (#)(vl-position # (vl-string-&amp;gt;list (strcase str)))) chrs)))
  )
)
;; I tried using...
;; (vl-every 'vl-position chrs (vl-string-&amp;gt;list (strcase str)))
;; but I've never figured out how to use vl-every
&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 04 Nov 2021 15:41:16 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735912#M53011</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T15:41:16Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735990#M53012</link>
      <description>&lt;P&gt;Yo, Hak,&lt;/P&gt;
&lt;P&gt;I didn't require that the sentence be 26 characters long, nor start with A and end with Z, nor be all caps, nor that the letters have to be in any order.&lt;/P&gt;
&lt;P&gt;But I admire your perspicacity, much like Abbie on NCIS.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 16:05:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10735990#M53012</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T16:05:57Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736001#M53013</link>
      <description>&lt;P&gt;NICE,&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/411413"&gt;@dbroad&lt;/a&gt;.&lt;/P&gt;
&lt;P&gt;So simple.&lt;/P&gt;
&lt;P&gt;You just jumped into the lead!&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":thumbs_up:"&gt;👍&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 16:10:08 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736001#M53013</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T16:10:08Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736039#M53014</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3930636"&gt;@john.uhden&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Yo, Hak,&lt;/P&gt;
&lt;P&gt;I didn't require that the sentence be 26 characters long, nor start with A and end with Z, nor be all caps, nor that the letters have to be in any order.&lt;/P&gt;
&lt;P&gt;But I admire your perspicacity, much like Abbie on NCIS.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;a) 26 letters in English alphabet.&amp;nbsp; Sentence should have at least 26 characters&lt;/P&gt;
&lt;P&gt;b) I sort all letters in a list from smallest to largest and have decided to use uppercase&lt;/P&gt;
&lt;P&gt;c) But you asked that all letters are here, so in sorted list first is A last is Z&lt;/P&gt;
&lt;P&gt;To resolve case with more than 26 letters in a sentence unique filtering is needed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So my algorithm can be summed up:&lt;/P&gt;
&lt;P&gt;Take all letters in sentence, convert to integers and use unique filter&lt;/P&gt;
&lt;P&gt;Convert to uppercase or lowercase for continuity and re move space&lt;/P&gt;
&lt;P&gt;Test is sorted list is in sequence&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Code was made on the fly so errors are here&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 16:26:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736039#M53014</guid>
      <dc:creator>hak_vz</dc:creator>
      <dc:date>2021-11-04T16:26:02Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736094#M53015</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1779365"&gt;@ВeekeeCZ&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Okay, okay, PROTEST accepted.&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp; You did not use a protected name as a symbol. - TRUE&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:"&gt;😊&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp; Other than the input argument, you used only one local. - TRUE&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":grinning_face:"&gt;😀&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;3.&amp;nbsp; You actually named your function with the silly named I posted. - TRUE&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":beaming_face_with_smiling_eyes:"&gt;😁&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;4.&amp;nbsp; Your function is as good as either of Kent's. - TRUE&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":relieved_face:"&gt;😌&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;5.&amp;nbsp; Your function is as simple and good as Doug's - FALSE&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":crying_face:"&gt;😢&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 16:53:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736094#M53015</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T16:53:54Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736126#M53016</link>
      <description>&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5530556"&gt;@hak_vz&lt;/a&gt;&lt;BR /&gt;It hurts me to say this to someone of your imminent eminent stature, but&lt;BR /&gt;take another look at Doug's.</description>
      <pubDate>Thu, 04 Nov 2021 17:12:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736126#M53016</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T17:12:02Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736207#M53017</link>
      <description>&lt;P&gt;Here is a quick one from me:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="general"&gt;(defun test (str)

(= (length (vl-sort (vl-remove-if-not '(lambda (x) (and (&amp;gt; x 64) (&amp;lt; x 91))) (vl-string-&amp;gt;list (strcase str))) '&amp;lt;)) 26)
)&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 04 Nov 2021 17:41:32 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736207#M53017</guid>
      <dc:creator>doaiena</dc:creator>
      <dc:date>2021-11-04T17:41:32Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736458#M53018</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1166654"&gt;@doaiena&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Very nice!&lt;/P&gt;
&lt;P&gt;Slight improvement:&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun test (str)                                    ; ↓↓↓↓↓↓↓↓
  (= (length (vl-sort (vl-remove-if-not '(lambda (x) (&amp;lt; 64 x 91))
  (vl-string-&amp;gt;list (strcase str))) '&amp;lt;)) 26)
)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;Pluses:&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp; You knew (or stumbled on the fact) that vl-sort removes duplicates.&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp; Zero locals other than input argument.&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":grinning_face:"&gt;😀&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;3.&amp;nbsp; Very short and sweet.&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":grinning_face_with_big_eyes:"&gt;😃&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;4.&amp;nbsp; Very few seem to care about checking if str is a 'STR.&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":thinking_face:"&gt;🤔&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/411413"&gt;@dbroad&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;You've got some serious competition here &lt;EM&gt;(with my assistance)&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;Of course I haven't checked any of them for speed, but like how many times are you going to repeat this?&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 19:21:07 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736458#M53018</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T19:21:07Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736519#M53019</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/411413"&gt;@dbroad&lt;/a&gt;'s function is hard to beat. vl-position is lightning fast and is going to be called 26 times in he worst case scenario. Definitely the best solution if you ask me.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 19:45:13 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736519#M53019</guid>
      <dc:creator>doaiena</dc:creator>
      <dc:date>2021-11-04T19:45:13Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736562#M53020</link>
      <description>&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1166654"&gt;@doaiena&lt;/a&gt;,&lt;BR /&gt;Well, I didn't ask.  I guess I should have.&lt;span class="lia-unicode-emoji" title=":zipper_mouth_face:"&gt;🤐&lt;/span&gt;&lt;BR /&gt;I'm waiting for any late entries.</description>
      <pubDate>Thu, 04 Nov 2021 20:02:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736562#M53020</guid>
      <dc:creator>john.uhden</dc:creator>
      <dc:date>2021-11-04T20:02:02Z</dc:date>
    </item>
    <item>
      <title>Re: Programming Challenge</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736600#M53021</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/1166654"&gt;@doaiena&lt;/a&gt;&amp;nbsp;, Your function is a witty one liner.&amp;nbsp; I like that it doesn't need any local vars.&amp;nbsp; They're both very fast. Benchmarking it depends on the program used and the order of the functions tested. When tested individually with Rob Bell's first bench version, yours appears slower but I doubt that matters much since both are almost the same time. If there were thousands of strings to test, I would imagine that something like this would be faster than either although this would be slower unless you had the perfect string.&lt;/P&gt;
&lt;LI-CODE lang="general"&gt;(defun test (str / lst i)
  (setq lst (vl-string-&amp;gt;list (strcase str)))
  (setq i 65)
  (and (&amp;gt;= (length lst) 26)
       (while (and (&amp;lt; i 91) (vl-position i lst)) (setq i (1+ i)))
       (= i 91)
       )
  )&lt;/LI-CODE&gt;
&lt;P&gt;This would immediately eliminate strings shorter than 26 characters before looping.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In college, I found, when writing in &lt;A href="https://en.wikipedia.org/wiki/APL_(programming_language)" target="_blank" rel="noopener"&gt;APL&lt;/A&gt;, that putting too much in a single line was really fun until I started having to debug my work months later. Each greek character could do an immense amount of calculation and I was stringing hundreds of them side by side to do hundreds of lines of Fortran in a single line.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Nov 2021 20:17:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/programming-challenge/m-p/10736600#M53021</guid>
      <dc:creator>dbroad</dc:creator>
      <dc:date>2021-11-04T20:17:49Z</dc:date>
    </item>
  </channel>
</rss>

