<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Slurpys%2F%EC%9E%84%EC%9D%B8%ED%83%9D</id>
	<title>Slurpys/임인택 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=Slurpys%2F%EC%9E%84%EC%9D%B8%ED%83%9D"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Slurpys/%EC%9E%84%EC%9D%B8%ED%83%9D&amp;action=history"/>
	<updated>2026-05-15T12:20:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=Slurpys/%EC%9E%84%EC%9D%B8%ED%83%9D&amp;diff=39225&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:28, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=Slurpys/%EC%9E%84%EC%9D%B8%ED%83%9D&amp;diff=39225&amp;oldid=prev"/>
		<updated>2021-02-07T05:28:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 코드 ==&lt;br /&gt;
 &lt;br /&gt;
 module Slurpys&lt;br /&gt;
 	where&lt;br /&gt;
 &lt;br /&gt;
 import IO&lt;br /&gt;
 &lt;br /&gt;
 main = do&lt;br /&gt;
 	putStrLn &amp;quot;slurpys by thom (masterhand at gmail dot com)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 slump string = &lt;br /&gt;
 	if length string == 0 &lt;br /&gt;
 		then False&lt;br /&gt;
 		else&lt;br /&gt;
 			if myOr [head string==&amp;#039;D&amp;#039;, head string==&amp;#039;E&amp;#039;]&lt;br /&gt;
 				then checkSubSlump (tail string)&lt;br /&gt;
 				else False&lt;br /&gt;
 &lt;br /&gt;
 checkSubSlump string = &lt;br /&gt;
 	if length string == 0&lt;br /&gt;
 		then False&lt;br /&gt;
 		else&lt;br /&gt;
 			if head string == &amp;#039;F&amp;#039;&lt;br /&gt;
 				then checkSlumpSub (tail string)&lt;br /&gt;
 				else False&lt;br /&gt;
 &lt;br /&gt;
 checkSlumpSub subString = &lt;br /&gt;
 	-- check empty string&lt;br /&gt;
 	if length subString == 0&lt;br /&gt;
 		then False&lt;br /&gt;
 		else&lt;br /&gt;
 			if head subString == &amp;#039;F&amp;#039;&lt;br /&gt;
 				then  checkSlumpSub (consumeLeadingChars &amp;#039;F&amp;#039; subString)&lt;br /&gt;
 				-- check there exists &amp;#039;G&amp;#039; or not.&lt;br /&gt;
 				else if head subString == &amp;#039;G&amp;#039;&lt;br /&gt;
 					then slumpEndCheck subString&lt;br /&gt;
 					-- if no, check if following string is slump or not.&lt;br /&gt;
 					else slump subString&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 -- check slump end condtion&lt;br /&gt;
 slumpEndCheck lastString =&lt;br /&gt;
 	if (length lastString) == 0&lt;br /&gt;
 		then False&lt;br /&gt;
 		else if myAnd [head lastString == &amp;#039;G&amp;#039;, length lastString == 1]&lt;br /&gt;
 		--else if head lastString == &amp;#039;G&amp;#039;&lt;br /&gt;
 			then True&lt;br /&gt;
 			else slump lastString&lt;br /&gt;
 &lt;br /&gt;
 -- remove Fs after slump&lt;br /&gt;
 consumeLeadingChars (filterChar) (toBeFiltered) = &lt;br /&gt;
 	if length toBeFiltered == 0&lt;br /&gt;
 		then []&lt;br /&gt;
 		else&lt;br /&gt;
 			if head toBeFiltered == filterChar&lt;br /&gt;
 				then consumeLeadingChars (filterChar) (tail toBeFiltered)&lt;br /&gt;
 				else toBeFiltered&lt;br /&gt;
 &lt;br /&gt;
 -- and, or function defined by thom.&lt;br /&gt;
 myOr booleans = length (filter (\x-&amp;amp;gt;x/=False) booleans) &amp;amp;gt; 0&lt;br /&gt;
 myAnd booleans = length (filter (\x-&amp;amp;gt;x/=False) booleans) == length booleans&lt;br /&gt;
 &lt;br /&gt;
 -- assertion list&lt;br /&gt;
 slumpTrueAssert = [slump &amp;quot;DFG&amp;quot;, slump &amp;quot;EFG&amp;quot;, slump &amp;quot;DFFFFFG&amp;quot;, slump &amp;quot;DFDFDFDFG&amp;quot;, slump &amp;quot;DFEFFFFG&amp;quot;]&lt;br /&gt;
 slumpFalseAssert = [slump &amp;quot;DFEFF&amp;quot;, slump &amp;quot;EFAHG&amp;quot;, slump &amp;quot;DEFG&amp;quot;, slump &amp;quot;DG&amp;quot;, slump &amp;quot;EFFFFDG&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 -- check for slimp&lt;br /&gt;
 slimp string =&lt;br /&gt;
 	if length string == 0&lt;br /&gt;
 		then False&lt;br /&gt;
 		-- &amp;quot;AH&amp;quot;&lt;br /&gt;
 		else if myAnd [length string/=0, length string==2, head string==&amp;#039;A&amp;#039;, tail string==&amp;quot;H&amp;quot;] -- note that type of (tail &amp;quot;string&amp;quot;) is string.&lt;br /&gt;
 			then True&lt;br /&gt;
 		-- length (&amp;quot;AB&amp;quot; + slimp &amp;quot;C&amp;quot; &amp;amp;gt; 3)&lt;br /&gt;
 		-- length (&amp;quot;A&amp;quot; + slump &amp;quot;C&amp;quot; &amp;amp;gt; 2 )&lt;br /&gt;
 		-- &amp;quot;AB&amp;quot; + slimp + &amp;#039;H&amp;#039; or &amp;#039;A&amp;#039; + slump + &amp;#039;H&amp;#039;&lt;br /&gt;
 		else if myAnd [length string&amp;amp;gt;2, head string==&amp;#039;A&amp;#039;]&lt;br /&gt;
 			then checkSubSlimp string&lt;br /&gt;
 		else False&lt;br /&gt;
 &lt;br /&gt;
 checkSubSlimp string =&lt;br /&gt;
 	if length string == 0&lt;br /&gt;
 		then False&lt;br /&gt;
 		else if myAnd [length string&amp;amp;gt;1, head string==&amp;#039;A&amp;#039;, head (tail string)== &amp;#039;B&amp;#039;]&lt;br /&gt;
 			then checkSlimpInside string&lt;br /&gt;
 		else if myAnd [length string&amp;amp;gt;0, head string==&amp;#039;A&amp;#039;]&lt;br /&gt;
 			then checkSlumpInside string&lt;br /&gt;
 		else False&lt;br /&gt;
 &lt;br /&gt;
 checkSlimpInside string = slimp (tearABC string)&lt;br /&gt;
 checkSlumpInside string = slump (tearAC string)&lt;br /&gt;
 &lt;br /&gt;
 -- tear A, B, C from &amp;quot;AB&amp;quot; + slimp + &amp;#039; C&amp;#039;&lt;br /&gt;
 tearABC string = reverse (tail (reverse (tail (tail string))))&lt;br /&gt;
 -- tear A, C from &amp;#039;A&amp;#039; + slump + &amp;#039; C&amp;#039;&lt;br /&gt;
 tearAC string = reverse (tail (reverse (tail string)))&lt;br /&gt;
 &lt;br /&gt;
 -- assertion list&lt;br /&gt;
 slimpTrueAssert = [slimp &amp;quot;AH&amp;quot;, slimp &amp;quot;ABAHC&amp;quot;, slimp &amp;quot;ABABAHCC&amp;quot;, slimp &amp;quot;ADFGC&amp;quot;, slimp &amp;quot;ADFFFFGC&amp;quot;, slimp &amp;quot;ABAEFGCC&amp;quot;, slimp &amp;quot;ADFDFGC&amp;quot;]&lt;br /&gt;
 slimpFalseAssert = [slimp &amp;quot;ABC&amp;quot;, slimp &amp;quot;ABAH&amp;quot;, slimp &amp;quot;DFGC&amp;quot;, slimp &amp;quot;ABABAHC&amp;quot;, slimp &amp;quot;SLIMP&amp;quot;, slimp &amp;quot;ADGC&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 slurpy string =&lt;br /&gt;
 	--myOr (slurpyTest string)&lt;br /&gt;
 	slurpyTest 2 string&lt;br /&gt;
 &lt;br /&gt;
 slurpyTest num string = &lt;br /&gt;
 	if num &amp;amp;gt; (length string) -1&lt;br /&gt;
 		then False&lt;br /&gt;
 		else if slurpyLoopTest num string&lt;br /&gt;
 			then True&lt;br /&gt;
 		else slurpyTest (num+1) string&lt;br /&gt;
 &lt;br /&gt;
 -- check slimp + slump for every sequential combination with given string.&lt;br /&gt;
 slurpyLoopTest num string = &lt;br /&gt;
 	if myAnd [slimp (take num string), slump (drop num string) ]&lt;br /&gt;
 		then True&lt;br /&gt;
 		else False&lt;br /&gt;
 &lt;br /&gt;
 slurpyTrueAssert = [slurpy &amp;quot;AHDFG&amp;quot;, slurpy &amp;quot;ADFGCDFFFFFG&amp;quot;, slurpy &amp;quot;ABAEFGCCDFEFFFFFG&amp;quot;]&lt;br /&gt;
 slurpyFalseAssert = [slurpy &amp;quot;AHDFGA&amp;quot;, slurpy &amp;quot;DFGAH&amp;quot;, slurpy &amp;quot;ABABCC&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
 -- Is structured programming appropriate for functional programming language like Haskell?&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
* 문제에 나온 예제 스트링을 assert 한 리스트의 출력&lt;br /&gt;
 Slurpys&amp;amp;gt; slurpyFalseAssert&lt;br /&gt;
 [False,False,False]&lt;br /&gt;
 Slurpys&amp;amp;gt; slurpyTrueAssert&lt;br /&gt;
 [True,True,True]&lt;br /&gt;
 Slurpys&amp;amp;gt; slumpTrueAssert&lt;br /&gt;
 [True,True,True,True,True]&lt;br /&gt;
 Slurpys&amp;amp;gt; slumpFalseAssert&lt;br /&gt;
 [False,False,False,False,False]&lt;br /&gt;
 Slurpys&amp;amp;gt; slimpTrueAssert&lt;br /&gt;
 [True,True,True,True,True,True,True]&lt;br /&gt;
 Slurpys&amp;amp;gt; slimpFalseAssert&lt;br /&gt;
 [False,False,False,False,False,False]&lt;br /&gt;
* slurpy 검증 (slump, slimp도 마찬가지)&lt;br /&gt;
 Slurpys&amp;amp;gt; slurpy &amp;quot;ADFGCDFFFFFG&amp;quot;&lt;br /&gt;
 True&lt;br /&gt;
 Slurpys&amp;amp;gt; slurpy &amp;quot;SLURPY&amp;quot;&lt;br /&gt;
 False&lt;br /&gt;
== 감상 ==&lt;br /&gt;
* 함수형 언어다운 코드가 무엇인지 모르겠다. 함수형 언어에 구조적인 코드는 과연 어울리는가?&lt;br /&gt;
* 삽질의 연속, syntax error 와의 끊임없는 싸움..&lt;br /&gt;
* 문제에서 제시하는 Input, Output 을 구현하지 않음&lt;br /&gt;
* 한글주석 안먹는다 ㅠㅠ&lt;br /&gt;
----&lt;br /&gt;
[[AOI]], [[Slurpys]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>