Author |
Message |
|
ztrumpet
Active Member
Joined: 06 May 2009 Posts: 555
|
Posted: 06 May 2009 03:30:16 pm Post subject: |
|
|
Make the smallest program you can that asks for a string, replaces all the vowels (A, E, I, O, and U) with an asterisk (*), and displays the finished string (Can be in Ans).
Mine is 103 in the Memory Management Menu with a one character name. |
|
Back to top |
|
|
Graphmastur
Advanced Member
Joined: 25 Mar 2009 Posts: 360
|
Posted: 06 May 2009 07:25:01 pm Post subject: |
|
|
You could do:
Code: input "Str num:",A
":"+Expr(sub("Str0Str1Str2Str3Str4Str5Str6Str7Str8Str9",A-1,1)+":"
For(A,1,length(ans))
IF InString("AEIOU",sub(ans,A,1))≠0
sub(ans,1,A-1)+"*"+sub(ans,A+1,length(ans))
End
sub(ans,2,length(ans)-2)
|
|
Back to top |
|
|
ztrumpet
Active Member
Joined: 06 May 2009 Posts: 555
|
Posted: 06 May 2009 07:28:52 pm Post subject: |
|
|
Instead of:
input "Str num:",A
":"+Expr(sub("Str0Str1Str2Str3Str4Str5Str6Str7Str8Str9",A-1,1)+":"
I just ment:
Input Str1
I could have been more clear
Cool code though...
edit:
Your code dosn't even work :\
IF InString("AEIOU",sub(ans,A,1))≠0
This would return if the string "AEIOU" was in the string
sub(ans,1,A-1)+"*"+sub(ans,A+1,length(ans))
This dosn't work if a vowel is in the first or last spot
Last edited by Guest on 06 May 2009 07:34:38 pm; edited 1 time in total |
|
Back to top |
|
|
ticalcnoah
Member
Joined: 28 Oct 2007 Posts: 153
|
|
Back to top |
|
|
ztrumpet
Active Member
Joined: 06 May 2009 Posts: 555
|
Posted: 06 May 2009 07:35:40 pm Post subject: |
|
|
I thought this was different.
That deals with taking out non-letters and this deals with replacing vowels.
Can anyone do better than 103 bytes? edit: 89
Mine (old solution) is:
spoiler
[whiteout]Input Str1
" ->Str2 /1 space
For(A,1,length(Str1
sub(Str1,A,1
If Ans="A" or Ans="E" or Ans="I" or Ans="O" or Ans="U
Then
Str2+"*
Else
Str2+Ans
End
Ans->Str2
End
sub(Ans,2,length(Str1[/whiteout]
/spoiler
Last edited by Guest on 12 Jul 2010 01:13:40 am; edited 1 time in total |
|
Back to top |
|
|
bfr
Member
Joined: 13 Feb 2006 Posts: 108
|
Posted: 07 May 2009 10:53:43 pm Post subject: |
|
|
"Can anyone do better than 103 bytes?" I'm guessing others like Weregoose, DarkerLine, many of the frequenters of the TI-BASIC board etc. probably could but don't feel like it :P
Quote: IF InString("AEIOU",sub(ans,A,1))≠0
This would return if the string "AEIOU" was in the string"
I think the condition would evaluate as true if a character in the prompted string (given by sub(ans,A,1)) is inside "AEIOU", which is what is wanted
Anyway, I made one and it's 74 bytes, or 75 bytes if you include the one-character name
And welcome to UnitedTI, by the way |
|
Back to top |
|
|
ztrumpet
Active Member
Joined: 06 May 2009 Posts: 555
|
Posted: 10 May 2009 06:36:42 pm Post subject: |
|
|
bfr wrote: Quote: IF InString("AEIOU",sub(ans,A,1))≠0
This would return if the string "AEIOU" was in the string"
I think the condition would evaluate as true if a character in the prompted string (given by sub(ans,A,1)) is inside "AEIOU", which is what is wanted
Edit- False: No, it would (I'm 100% sure- I just tested) evaluate for the string "AEIOU". Since the one letter given by the sub( is one character long and "AEIOU" is 5 characters long it will always be false.
Thank's for the welcome!
How did you get it in the 70s; I got it down to 89 (one letter name so code is 79).
I want to see your code.
My code:
Code: Input Str1
"+
For(A,1,length(Str1
Ans+sub(Str1,A,1
For(B,1,5
If inString(Ans,sub"AEIOU",B,1
sub(Ans,1,A)+"*
End
End
sub(Ans,2,A-1
Last edited by Guest on 10 May 2009 07:08:37 pm; edited 1 time in total |
|
Back to top |
|
|
bfr
Member
Joined: 13 Feb 2006 Posts: 108
|
Posted: 10 May 2009 06:50:12 pm Post subject: |
|
|
"No, it would (I'm 99% sure) evaluate for the string "AEIOU". Since the one letter given by the sub( is one character long and "AEIOU" is 5 characters long it will always be false." I think you're thinking of inString(sub(ans,A,1),"AEIOU"). Note that the syntax is inString(string,substring that is looked for in the string,(optional parameter for where to start) , as you correctly did in your code, so by doing InString("AEIOU",sub(ans,A,1)), it looks to see if the current character is inside a string of vowels, which consequently tests to see if it is a vowel. For example, you can try entering InString("AEIOU","A" on the homescreen, and it'll return 1.
My code (highlight to view):
Quote:
Prompt Str1
" ->Str2
For(A,1,length(Str1
sub(Str1,A,1
If inString("AEIOU",Ans
"*
Str2+Ans->Str2
End
sub(Ans,2,A-1
EDIT: I changed the last line of my code because it turns out what you did saves a byte
Last edited by Guest on 10 May 2009 06:58:42 pm; edited 1 time in total |
|
Back to top |
|
|
ztrumpet
Active Member
Joined: 06 May 2009 Posts: 555
|
Posted: 10 May 2009 06:59:21 pm Post subject: |
|
|
I got pwned!
That's amazing
I didn't know you could use inString like that (reversed from how I've used it)- You're right
That's cool!
Wow... 74 bytes
edit:
I optimized yours to 73 bytes!
Code: Input Str1
"+
For(A,1,length(Str1
Ans->Str2
sub(Str1,A,1
If inString("AEIOU",Ans
"*
Str2+Ans
End
sub(Ans,2,A-1
I wonder if it's possible to do it in under 73 bytes...
Last edited by Guest on 12 May 2009 08:09:50 pm; edited 1 time in total |
|
Back to top |
|
|
ztrumpet
Active Member
Joined: 06 May 2009 Posts: 555
|
Posted: 12 May 2009 08:09:33 pm Post subject: |
|
|
I think 73 bytes is as good as it's going to get.
Great job bfr!
If anyone can beat 73 bytes, feel free to post. |
|
Back to top |
|
|
Weregoose Authentic INTJ
Super Elite (Last Title)
Joined: 25 Nov 2004 Posts: 3976
|
Posted: 12 May 2009 09:50:14 pm Post subject: |
|
|
To purvey a little trick that DarkerLine had used in another challenge:
Input Str1
For(A,1,length(Str1
sub(Str1,A,1
If inString("AEIOU",Ans
"*
Str1+Ans→Str1
End
sub(Ans,A,A-1
Five bytes less.
Last edited by Guest on 11 Jul 2010 05:37:23 pm; edited 1 time in total |
|
Back to top |
|
|
ztrumpet
Active Member
Joined: 06 May 2009 Posts: 555
|
Posted: 13 May 2009 08:17:59 am Post subject: |
|
|
No way!
That's awesome!
Again, I wonder if this is unbeatable.
Last edited by Guest on 13 May 2009 02:57:24 pm; edited 1 time in total |
|
Back to top |
|
|
|