State name puzzle: Difference between revisions
m
→{{header|Wren}}: Minor tidy
m (→{{header|Wren}}: Minor tidy) |
|||
(8 intermediate revisions by 7 users not shown) | |||
Line 43:
"New Kory", "Wen Kory", "York New", "Kory New", "New Kory"
</pre>
{{Template:Strings}}
<br><br>
Line 48 ⟶ 51:
{{trans|Python}}
<
‘California’, ‘Colorado’, ‘Connecticut’, ‘Delaware’, ‘Florida’,
‘Georgia’, ‘Hawaii’, ‘Idaho’, ‘Illinois’, ‘Indiana’, ‘Iowa’, ‘Kansas’,
Line 65 ⟶ 68:
V i = L.index
L(s2) states[i+1..]
smap[sorted(s1‘’s2
L(pairs) sorted(smap.values())
I pairs.len > 1
print(pairs.join(‘ = ’))</
{{out}}
Line 75 ⟶ 78:
North Carolina + South Dakota = North Dakota + South Carolina
</pre>
=={{header|AppleScript}}==
<syntaxhighlight lang="applescript">use AppleScript version "2.3.1" -- Mac OS X 10.9 (Mavericks) or later.
use sorter : script ¬
"Custom Iterative Ternary Merge Sort" -- <www.macscripter.net/t/timsort-and-nigsort/71383/3>
on stateNamePuzzle()
script o
property stateNames : {"Alabama", "Alaska", "Arizona", "Arkansas", ¬
"California", "Colorado", "Connecticut", "Delaware", ¬
"Florida", "Georgia", "Hawaii", "Idaho", "Illinois", ¬
"Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", ¬
"Maine", "Maryland", "Massachusetts", "Michigan", ¬
"Minnesota", "Mississippi", "Missouri", "Montana", ¬
"Nebraska", "Nevada", "New Hampshire", "New Jersey", ¬
"New Mexico", "New York", "North Carolina", "North Dakota", ¬
"Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", ¬
"South Carolina", "South Dakota", "Tennessee", "Texas", ¬
"Utah", "Vermont", "Virginia", ¬
"Washington", "West Virginia", "Wisconsin", "Wyoming", ¬
"New Kory", "Wen Kory", "York New", "Kory New", "New Kory"}
property workList : {}
-- Custom comparison handler for the sort.
on isGreater(a, b)
return (beginning of a > beginning of b)
end isGreater
end script
ignoring case
-- Remove duplicates.
repeat with i from 1 to (count o's stateNames)
set thisName to o's stateNames's item i
if ({thisName} is not in o's workList) then set end of o's workList to thisName
end repeat
set o's stateNames to o's workList
-- Build a list of lists containing unique pairs of names preceded by
-- text composed of their combined and sorted visible characters.
set o's workList to {}
set stateCount to (count o's stateNames)
repeat with i from 1 to (stateCount - 1)
set name1 to o's stateNames's item i
repeat with j from (i + 1) to stateCount
set name2 to o's stateNames's item j
set chrs to (name1 & name2)'s characters
tell sorter to sort(chrs, 1, -1, {})
set end of o's workList to {join(chrs, "")'s word 1, {name1, name2}}
end repeat
end repeat
-- Sort the lists on the character strings
set pairCount to (count o's workList)
tell sorter to sort(o's workList, 1, pairCount, {comparer:o})
-- Look for groups of equal character strings and match
-- associated name pairs not containing the same name(s).
set output to {}
set l to 1
repeat while (l < pairCount)
set chrs to beginning of o's workList's item l
set r to l
repeat while ((r < pairCount) and (beginning of o's workList's item (r + 1) = chrs))
set r to r + 1
end repeat
if (r > l) then
repeat with i from l to (r - 1)
set {name1, name2} to end of o's workList's item i
set text1 to join(result, " and ") & " --> "
repeat with j from (i + 1) to r
set pair2 to end of o's workList's item j
if (not (({name1} is in pair2) or ({name2} is in pair2))) then
set end of output to text1 & join(pair2, " and ")
end if
end repeat
end repeat
end if
set l to r + 1
end repeat
end ignoring
return join(output, linefeed)
end stateNamePuzzle
on join(lst, delim)
set astid to AppleScript's text item delimiters
set AppleScript's text item delimiters to delim
set txt to lst as text
set AppleScript's text item delimiters to astid
return txt
end join
stateNamePuzzle()</syntaxhighlight>
{{output}}
<syntaxhighlight lang="applescript">"North Carolina and South Dakota --> North Dakota and South Carolina
New York and New Kory --> Wen Kory and York New
New York and New Kory --> Wen Kory and Kory New
New York and New Kory --> York New and Kory New
New York and Wen Kory --> New Kory and York New
New York and Wen Kory --> New Kory and Kory New
New York and Wen Kory --> York New and Kory New
New York and York New --> New Kory and Wen Kory
New York and York New --> New Kory and Kory New
New York and York New --> Wen Kory and Kory New
New York and Kory New --> New Kory and Wen Kory
New York and Kory New --> New Kory and York New
New York and Kory New --> Wen Kory and York New
New Kory and Wen Kory --> York New and Kory New
New Kory and York New --> Wen Kory and Kory New
New Kory and Kory New --> Wen Kory and York New"
</syntaxhighlight>
=={{header|Bracmat}}==
<
Alaska
Arizona
Line 167 ⟶ 282:
& "State name puzzle"$!states
& "State name puzzle"$(!states !extrastates)
);</
Output:
<pre>North Carolina + South Dakota = North Dakota + South Carolina
Line 191 ⟶ 306:
=={{header|C}}==
Sort by letter occurence and deal with dupes.
<
#include <stdlib.h>
#include <string.h>
Line 296 ⟶ 411:
find_mix();
return 0;
}</
=={{header|C++}}==
Ported from C solution.
<
#include <iostream>
#include <string>
Line 398 ⟶ 513:
start = next;
}
}</
=={{header|Clojure}}==
<
(:require [clojure.data.csv :as csv]
[clojure.java.io :as io]
Line 499 ⟶ 614:
(println "Solutions with made up states added")
(evaluate-and-print (concat real-states made-up-states)))
</syntaxhighlight>
{{out}}
<pre>
Line 523 ⟶ 638:
</pre>
=={{header|D}}==
<
auto states = ["Alabama", "Alaska", "Arizona", "Arkansas",
Line 550 ⟶ 665:
writefln("%-(%-(%s = %)\n%)",
smap.values.sort().filter!q{ a.length > 1 });
}</
{{out}}
<pre>North Carolina + South Dakota = North Dakota + South Carolina</pre>
=={{header|F_Sharp|F#}}==
<syntaxhighlight lang="fsharp">
// State name puzzle. Nigel Galloway: February 9th., 2023
let states=["Alabama"; "Alaska"; "Arizona"; "Arkansas"; "California"; "Colorado"; "Connecticut"; "Delaware"; "Florida"; "Georgia"; "Hawaii"; "Idaho"; "Illinois"; "Indiana"; "Iowa"; "Kansas"; "Kentucky"; "Louisiana"; "Maine"; "Maryland"; "Massachusetts"; "Michigan"; "Minnesota"; "Mississippi"; "Missouri"; "Montana"; "Nebraska"; "Nevada"; "New Hampshire"; "New Jersey"; "New Mexico"; "New York"; "North Carolina"; "North Dakota"; "Ohio"; "Oklahoma"; "Oregon"; "Pennsylvania"; "Rhode Island"; "South Carolina"; "South Dakota"; "Tennessee"; "Texas"; "Utah"; "Vermont"; "Virginia"; "Washington"; "West Virginia"; "Wisconsin"; "Wyoming"; "New Kory"; "Wen Kory"; "York New"; "Kory New"; "New Kory"]|>List.distinct
let fN(i,g)(e,l)=let n=Array.zeroCreate<int>256
let fN i g=n[g]<-n[g]+i
let fG n g=(g:string).ToLower().ToCharArray()|>Array.iter(fun g->fN n (int g))
fG 1 i; fG 1 g; fG -1 e; fG -1 l; n|>Array.forall((=)0)
let n=states|>List.allPairs states|>List.filter(fun(n,g)->n<g)|>List.groupBy(fun(n,g)->n.Length+g.Length)
let g=n|>List.map(fun(_,n)->n|>List.allPairs n|>List.filter(fun((n,g),(n',g'))->(n,g)<(n',g') && n<>n' && n<>g' && g<>n' && g<>g' && fN(n,g)(n',g')))|>List.filter(List.isEmpty>>not)
g|>List.iter(List.iter(fun((i,g),(e,l))->printfn $"%s{i},%s{g}->%s{e},%s{l}"))
</syntaxhighlight>
{{out}}
<pre>
New Kory,New York->Wen Kory,York New
New Kory,Wen Kory->New York,York New
New Kory,York New->New York,Wen Kory
Kory New,New York->New Kory,Wen Kory
Kory New,New York->New Kory,York New
Kory New,New York->Wen Kory,York New
Kory New,New Kory->New York,Wen Kory
Kory New,New Kory->New York,York New
Kory New,New Kory->Wen Kory,York New
Kory New,Wen Kory->New York,York New
Kory New,Wen Kory->New Kory,New York
Kory New,Wen Kory->New Kory,York New
Kory New,York New->New York,Wen Kory
Kory New,York New->New Kory,New York
Kory New,York New->New Kory,Wen Kory
North Carolina,South Dakota->North Dakota,South Carolina
</pre>
=={{header|Go}}==
<
import (
Line 631 ⟶ 777:
}
}
}</
Output:
<pre>
Line 656 ⟶ 802:
=={{header|Haskell}}==
<
import Data.Char (
import Data.Function (on)
import Data.List (groupBy, nub, sort, sortBy)
-------------------- STATE NAME PUZZLE -------------------
puzzle states =
concatMap
((filter isValid . pairs) . map snd)
( filter ((> 1) . length) $
groupBy ((==) `on` fst) $
sortBy
(compare `on` fst)
[ (pkey (a <> b), (a, b))
| (a, b) <- pairs (nub $ sort states)
]
)
where
pkey = sort . filter isLetter . map toLower
isValid ((a0, a1), (b0, b1)) =
(a0 /= b0)
&& (a0 /= b1)
&& (a1 /= b0)
&& (a1 /= b1)
pairs :: [a] -> [(a, a)]
pairs [] = []
pairs (y : ys) = map (y,) ys
--------------------------- TEST -------------------------
main :: IO ()
main = do
"Matching pairs generated from "
<> " state names and "
<> show (length fakeStateNames)
<> " fake state names:"
mapM_ print $ puzzle $ stateNames <> fakeStateNames
stateNames :: [String]
stateNames =
[ "Alabama",
"Alaska",
"Arizona",
"Arkansas",
"California",
"Colorado",
"Connecticut",
"Delaware",
"Florida",
"Georgia",
"Hawaii",
"Idaho",
"Illinois",
"Indiana",
"Iowa",
"Kansas",
"Kentucky",
"Louisiana",
"Maine",
"Maryland",
"Massachusetts",
"Michigan",
"Minnesota",
"Mississippi",
"Missouri",
"Montana",
"Nebraska",
"Nevada",
"New Hampshire",
"New Jersey",
"New Mexico",
"New York",
"North Carolina",
"North Dakota",
"Ohio",
"Oklahoma",
"Oregon",
"Pennsylvania",
"Rhode Island",
"South Carolina",
"South Dakota",
"Tennessee",
"Texas",
"Utah",
"Vermont",
"Virginia",
"Washington",
"West Virginia",
"Wisconsin",
"Wyoming"
]
fakeStateNames :: [String]
fakeStateNames =
[ "New Kory",
"Wen Kory",
"York New",
"Kory New",
"New Kory"
]</syntaxhighlight>
{{out}}
<pre style="font-size:80%">Matching pairs generated from 50 state names and 5 fake state names:
Line 765 ⟶ 929:
=={{header|Icon}} and {{header|Unicon}}==
=== Equivalence Class Solution ===
<
procedure main(arglist)
Line 813 ⟶ 977:
}
write("... runtime ",(&time - st)/1000.,"\n",m," matches found.")
end</
The following are common routines:<
return ["Alabama", "Alaska", "Arizona", "Arkansas",
"California", "Colorado", "Connecticut",
Line 835 ⟶ 999:
procedure getStates2() # return list of state names + fictious states
return getStates() ||| ["New Kory", "Wen Kory", "York New", "Kory New", "New Kory"]
end</
=== Godel Number Solution ===
<
procedure GNsolve(S)
Line 895 ⟶ 1,059:
every z *:= xlate[!s]
return z
end</
{{libheader|Icon Programming Library}}
Line 944 ⟶ 1,108:
Implementation:
<
states=:<;._2]0 :0-.LF
Line 964 ⟶ 1,128:
pairUp=: (#~ matchUp)@({~ 2 comb #)@~.
matchUp=: (i.~ ~: i:~)@:(<@normalize@;"1)
normalize=: /:~@tolower@-.&' '</
In action:
<
┌──────────────┬──────────────┐
│North Carolina│South Dakota │
├──────────────┼──────────────┤
│North Dakota │South Carolina│
└──────────────┴──────────────┘</
Note: this approach is sufficient to solve the original problem, but does not properly deal with the addition of fictitious states. So:
<
matchUp2=: /:~"2@:(/:~"1)@(#~ 4=#@~.@,"2)</
In action:
<
┌──────────────┬──────────────┐
│Kory New │York New │
Line 1,077 ⟶ 1,241:
├──────────────┼──────────────┤
│North Dakota │South Carolina│
└──────────────┴──────────────┘</
=={{header|Java}}==
{{works with|Java|8}}
<
import java.util.stream.*;
Line 1,138 ⟶ 1,302:
});
}
}</
Output:
Line 1,161 ⟶ 1,325:
=={{header|jq}}==
{{works with|jq|1.4}}
<
# Output: an array, being the exploded form of the normalized input
def normalize:
Line 1,200 ⟶ 1,364:
else .
end)
| .[];</
'''The task:'''
<
"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado",
"Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho",
Line 1,222 ⟶ 1,386:
(States + ["New Kory", "Wen Kory", "York New", "Kory New", "New Kory"] | solve) ;
task</
{{out}}
<
Real state names:
[["North Carolina","South Dakota"],["North Dakota","South Carolina"]]
Line 1,244 ⟶ 1,408:
[["New Kory","Wen Kory"],["New York","York New"]]
[["New Kory","York New"],["New York","Wen Kory"]]
[["North Carolina","South Dakota"],["North Dakota","South Carolina"]]</
=={{header|Julia}}==
Line 1,251 ⟶ 1,415:
'''Module''':
<
const realnames = ["Alabama", "Alaska", "Arizona", "Arkansas", "California",
Line 1,305 ⟶ 1,469:
end
end # module StateNamePuzzle</
'''Main''':
<
foreach(println, StateNamePuzzle.solve(StateNamePuzzle.realnames))
println("\nReal + fictitious state:")
foreach(println, StateNamePuzzle.solve(vcat(StateNamePuzzle.realnames,
StateNamePuzzle.fictitious)))</
{{out}}
Line 1,338 ⟶ 1,502:
=={{header|Kotlin}}==
<
fun solve(states: List<String>) {
Line 1,408 ⟶ 1,572:
println("Real and fictitious states:")
solve(states + fictitious)
}</
{{out}}
Line 1,436 ⟶ 1,600:
=={{header|LiveCode}}==
This is going to be O(N^2).
<
if the optionkey is down then breakpoint
put the long seconds into T
Line 1,480 ⟶ 1,644:
replace comma with empty in X
return X
end itemsToChars</
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<
groupSameQ[g1_, g2_] := Sort /@ Partition[g1, 2] === Sort /@ Partition[g2, 2];
permutations[{a_, b_, c_, d_}] = Union[Permutations[{a, b, c, d}], SameTest -> groupSameQ];
Line 1,493 ⟶ 1,657:
"Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
"West Virginia", "Wisconsin", "Wyoming"}], {4}], 1],
letters[#, 2] === letters[#, -2] &]</
=={{header|Nim}}==
<
Line 1,555 ⟶ 1,719:
echo "For real + fictitious states:"
for n, pairs in matchingPairs(States & Fictitious):
echo &"{n+1:2}: {pairs}"</
{{out}}
Line 1,580 ⟶ 1,744:
=={{header|Perl}}==
<
use warnings;
use strict;
Line 1,644 ⟶ 1,808:
say @states + @fictious, ' states:';
puzzle(@states, @fictious);</
=={{header|Phix}}==
<!--<syntaxhighlight lang="phix">(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">states</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"Alabama"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Alaska"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Arizona"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Arkansas"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"California"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Colorado"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Connecticut"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Delaware"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Florida"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Georgia"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Hawaii"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Idaho"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Illinois"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Indiana"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Iowa"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Kansas"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Kentucky"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Louisiana"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Maine"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Maryland"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Massachusetts"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Michigan"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Minnesota"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Mississippi"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Missouri"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Montana"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Nebraska"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Nevada"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"New Hampshire"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"New Jersey"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"New Mexico"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"New York"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"North Carolina"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"North Dakota"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Ohio"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Oklahoma"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Oregon"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Pennsylvania"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Rhode Island"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"South Carolina"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"South Dakota"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Tennessee"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Texas"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Utah"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Vermont"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Virginia"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Washington"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"West Virginia"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Wisconsin"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Wyoming"</span><span style="color: #0000FF;">},</span>
<span style="color: #000080;font-style:italic;">-- extras = {"New Kory", "Wen Kory", "York New", "Kory New", "New Kory"}</span>
<span style="color: #000000;">extras</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"Slender Dragon"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Abalamara"</span><span style="color: #0000FF;">}</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">no_dup</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">to</span> <span style="color: #000000;">2</span> <span style="color: #008080;">by</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]=</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[$]</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..$-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">return</span> <span style="color: #000000;">s</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #008080;">procedure</span> <span style="color: #000000;">play</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">no_dup</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">))</span>
<span style="color: #7060A8;">destroy_dict</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- empty dict</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">key</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">trim</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">sort</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">lower</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]&</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">])))</span>
<span style="color: #004080;">object</span> <span style="color: #000000;">data</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">getd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">key</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">data</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">putd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">key</span><span style="color: #0000FF;">,{{</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #000000;">j</span><span style="color: #0000FF;">}})</span>
<span
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">data</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #004080;">integer</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">data</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">m</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">i</span> <span style="color: #008080;">and</span> <span style="color: #000000;">m</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">j</span> <span style="color: #008080;">and</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">i</span> <span style="color: #008080;">and</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">j</span> <span style="color: #008080;">then</span>
<span style="color: #0000FF;">?{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">],</span><span style="color: #008000;">"<==>"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">m</span><span style="color: #0000FF;">],</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]}</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #7060A8;">putd</span><span style="color: #0000FF;">(</span><span style="color: #000000;">key</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">data</span><span style="color: #0000FF;">),{</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #000000;">j</span><span style="color: #0000FF;">}))</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #000000;">play</span><span style="color: #0000FF;">(</span><span style="color: #000000;">states</span><span style="color: #0000FF;">)</span>
<span style="color: #0000FF;">?</span><span style="color: #008000;">"==="</span>
<span style="color: #000000;">play</span><span style="color: #0000FF;">(</span><span style="color: #000000;">states</span><span style="color: #0000FF;">&</span><span style="color: #000000;">extras</span><span style="color: #0000FF;">)</span>
<!--</syntaxhighlight>-->
{{out}}
<pre>
Line 1,707 ⟶ 1,874:
=={{header|PicoLisp}}==
<
(group
(mapcar '((Name) (cons (clip (sort (chop (lowc Name)))) Name))
Line 1,747 ⟶ 1,914:
(car Y) ) )
(cdr X) ) )
*States ) ) )</
Output:
<pre>-> ((("North Carolina" . "South Dakota") ("North Dakota" . "South Carolina")))</pre>
Line 1,754 ⟶ 1,921:
Works with SWI-Prolog. Use of Goedel numbers.
<
L = ["Alabama", "Alaska", "Arizona", "Arkansas",
"California", "Colorado", "Connecticut",
Line 1,824 ⟶ 1,991:
GC1 is GC + 26 ** Ind,
compute_Goedel(T, GC1, GF).
</syntaxhighlight>
Output :
<pre> ?- time(state_name_puzzle).
Line 1,849 ⟶ 2,016:
=={{header|Python}}==
{{trans|D}}
<
states = ["Alabama", "Alaska", "Arizona", "Arkansas",
Line 1,874 ⟶ 2,041:
for pairs in sorted(smap.itervalues()):
if len(pairs) > 1:
print " = ".join(pairs)</
=={{header|Racket}}==
<
#lang racket
(define states
Line 1,908 ⟶ 2,075:
(cond [(hash-ref seen c (λ() (hash-set! seen c (list s1 s2)) #f))
=> (λ(states) (displayln (~v states (list s1 s2))))]))
</syntaxhighlight>
Output:
<
'("north dakota" "south carolina") '("north carolina" "south dakota")
</syntaxhighlight>
=={{header|Raku}}==
(formerly Perl 6)
{{Works with|rakudo|2018.03}}
<syntaxhighlight lang="raku"
Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware
Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky
Line 1,952 ⟶ 2,119:
}
}
}</
Output:
Line 1,979 ⟶ 2,146:
Code was added to the REXX program to remove dead-end words (state names) that can't possibly be part of
<br>a solution, in particular, words that contain a unique letter (among all the state names).
<
!='Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia,',
'Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, ',
Line 2,054 ⟶ 2,221:
/*──────────────────────────────────────────────────────────────────────────────────────*/
list: say; do i=1 for z; say right(i, 9) ##.i; end; say; return
s: if arg(1)==1 then return arg(3); return word(arg(2) 's', 1) /*pluralizer.*/</
{{out|output|text= when using the default input:}}
<pre style="height:60ex">
Line 2,201 ⟶ 2,368:
=={{header|Ruby}}==
{{trans|Tcl}}
<
# 26 prime numbers
Line 2,245 ⟶ 2,412:
puts ""
puts "with fictional states"
print_answer(States + ["New Kory", "Wen Kory", "York New", "Kory New", "New Kory"])</
outputs
Line 2,270 ⟶ 2,437:
=={{header|Scala}}==
<
// Logic:
def disjointPairs(pairs: Seq[Set[String]]) =
Line 2,295 ⟶ 2,462:
println(anagramPairs(states).map(_.map(_ mkString " + ") mkString " = ") mkString "\n")
}</
{{out}}
<pre>New Kory + Wen Kory = York New + Kory New
Line 2,315 ⟶ 2,482:
=={{header|Tcl}}==
<
# Gödel number generator
proc goedel s {
Line 2,381 ⟶ 2,548:
"New Kory" "Wen Kory" "York New" "Kory New" "New Kory"
}
printPairs "Real and False States" [groupStates [concat $realStates $falseStates]]</
Output:
<pre>
Line 2,442 ⟶ 2,609:
{{libheader|Wren-sort}}
{{libheader|Wren-fmt}}
<
import "./sort" for Sort
import "./fmt" for Fmt
var solve = Fn.new { |states|
Line 2,516 ⟶ 2,683:
var fictitious = [ "New Kory", "Wen Kory", "York New", "Kory New", "New Kory" ]
System.print("Real and fictitious states:")
solve.call(states + fictitious)</
{{out}}
Line 2,544 ⟶ 2,711:
=={{header|zkl}}==
{{trans|Python}}
<
states:=("Alabama, Alaska, Arizona, Arkansas,
California, Colorado, Connecticut, Delaware, Florida,
Line 2,569 ⟶ 2,736:
// pairs=Utils.Helpers.listUnique(pairs); // eliminate dups
if(pairs.len()>1)
println(pairs.concat(" = ")) }</
{{out}}
<pre>
|