State name puzzle: Difference between revisions

m
m (→‎{{header|Phix}}: added syntax colouring, made p2js compatible)
m (→‎{{header|Wren}}: Minor tidy)
 
(6 intermediate revisions by 5 users not shown)
Line 51:
{{trans|Python}}
 
<langsyntaxhighlight lang="11l">V states = [‘Alabama’, ‘Alaska’, ‘Arizona’, ‘Arkansas’,
‘California’, ‘Colorado’, ‘Connecticut’, ‘Delaware’, ‘Florida’,
‘Georgia’, ‘Hawaii’, ‘Idaho’, ‘Illinois’, ‘Indiana’, ‘Iowa’, ‘Kansas’,
Line 68:
V i = L.index
L(s2) states[i+1..]
smap[sorted(s1‘’s2).join(‘’)].append(s1‘ + ’s2)
 
L(pairs) sorted(smap.values())
I pairs.len > 1
print(pairs.join(‘ = ’))</langsyntaxhighlight>
 
{{out}}
Line 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}}==
<langsyntaxhighlight lang="bracmat">( Alabama
Alaska
Arizona
Line 170 ⟶ 282:
& "State name puzzle"$!states
& "State name puzzle"$(!states !extrastates)
);</langsyntaxhighlight>
Output:
<pre>North Carolina + South Dakota = North Dakota + South Carolina
Line 194 ⟶ 306:
=={{header|C}}==
Sort by letter occurence and deal with dupes.
<langsyntaxhighlight Clang="c">#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Line 299 ⟶ 411:
find_mix();
return 0;
}</langsyntaxhighlight>
 
=={{header|C++}}==
Ported from C solution.
<langsyntaxhighlight lang="cpp">#include <algorithm>
#include <iostream>
#include <string>
Line 401 ⟶ 513:
start = next;
}
}</langsyntaxhighlight>
 
=={{header|Clojure}}==
<langsyntaxhighlight lang="clojure">(ns clojure-sandbox.statenames
(:require [clojure.data.csv :as csv]
[clojure.java.io :as io]
Line 502 ⟶ 614:
(println "Solutions with made up states added")
(evaluate-and-print (concat real-states made-up-states)))
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 526 ⟶ 638:
</pre>
=={{header|D}}==
<langsyntaxhighlight lang="d">import std.stdio, std.algorithm, std.string, std.exception;
 
auto states = ["Alabama", "Alaska", "Arizona", "Arkansas",
Line 553 ⟶ 665:
writefln("%-(%-(%s = %)\n%)",
smap.values.sort().filter!q{ a.length > 1 });
}</langsyntaxhighlight>
{{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}}==
<langsyntaxhighlight lang="go">package main
 
import (
Line 634 ⟶ 777:
}
}
}</langsyntaxhighlight>
Output:
<pre>
Line 659 ⟶ 802:
 
=={{header|Haskell}}==
<langsyntaxhighlight lang="haskell">{-# LANGUAGE TupleSections #-}
 
import Data.Char (toLowerisLetter, isLettertoLower)
import Data.List (sort, sortBy, nub, groupBy)
import Data.Function (on)
import Data.List (groupBy, nub, sort, sortBy)
 
-------------------- STATE NAME PUZZLE -------------------
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"]
 
pairspuzzle :: [aString] -> [(a(String,a String), (String, String))]
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 ++<> pairs ys
 
puzzle :: [String] -> [((String,String), (String, String))]
puzzle states =
concatMap (filter isValid.pairs) $
map (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)
 
--------------------------- TEST -------------------------
main :: IO ()
main = do
putStrLn $ "Matching pairs generated from "
"Matching pairs generated from "
++ show (length stateNames) ++ " state names and "
++<> show (length fakeStateNamesstateNames) ++ " fake state names:"
<> " state names and "
mapM_ print $ puzzle $ stateNames ++ fakeStateNames</lang>
<> 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 768 ⟶ 929:
=={{header|Icon}} and {{header|Unicon}}==
=== Equivalence Class Solution ===
<langsyntaxhighlight Iconlang="icon">link strings # for csort and deletec
 
procedure main(arglist)
Line 816 ⟶ 977:
}
write("... runtime ",(&time - st)/1000.,"\n",m," matches found.")
end</langsyntaxhighlight>
 
The following are common routines:<langsyntaxhighlight Iconlang="icon">procedure getStates() # return list of state names
return ["Alabama", "Alaska", "Arizona", "Arkansas",
"California", "Colorado", "Connecticut",
Line 838 ⟶ 999:
procedure getStates2() # return list of state names + fictious states
return getStates() ||| ["New Kory", "Wen Kory", "York New", "Kory New", "New Kory"]
end</langsyntaxhighlight>
 
=== Godel Number Solution ===
<langsyntaxhighlight Iconlang="icon">link factors
 
procedure GNsolve(S)
Line 898 ⟶ 1,059:
every z *:= xlate[!s]
return z
end</langsyntaxhighlight>
 
{{libheader|Icon Programming Library}}
Line 947 ⟶ 1,108:
Implementation:
 
<langsyntaxhighlight lang="j">require'strings stats'
 
states=:<;._2]0 :0-.LF
Line 967 ⟶ 1,128:
pairUp=: (#~ matchUp)@({~ 2 comb #)@~.
matchUp=: (i.~ ~: i:~)@:(<@normalize@;"1)
normalize=: /:~@tolower@-.&' '</langsyntaxhighlight>
 
In action:
 
<langsyntaxhighlight lang="j"> pairUp states
┌──────────────┬──────────────┐
│North Carolina│South Dakota │
├──────────────┼──────────────┤
│North Dakota │South Carolina│
└──────────────┴──────────────┘</langsyntaxhighlight>
 
Note: this approach is sufficient to solve the original problem, but does not properly deal with the addition of fictitious states. So:
 
<langsyntaxhighlight lang="j">isolatePairs=: ~.@matchUp2@(#~ *./@matchUp"2)@({~ 2 comb #)
matchUp2=: /:~"2@:(/:~"1)@(#~ 4=#@~.@,"2)</langsyntaxhighlight>
 
In action:
 
<langsyntaxhighlight lang="j"> isolatePairs pairUp 'New Kory';'Wen Kory';'York New';'Kory New';'New Kory';states
┌──────────────┬──────────────┐
│Kory New │York New │
Line 1,080 ⟶ 1,241:
├──────────────┼──────────────┤
│North Dakota │South Carolina│
└──────────────┴──────────────┘</langsyntaxhighlight>
 
=={{header|Java}}==
{{works with|Java|8}}
<langsyntaxhighlight lang="java">import java.util.*;
import java.util.stream.*;
 
Line 1,141 ⟶ 1,302:
});
}
}</langsyntaxhighlight>
 
Output:
Line 1,164 ⟶ 1,325:
=={{header|jq}}==
{{works with|jq|1.4}}
<langsyntaxhighlight lang="jq"># Input: a string
# Output: an array, being the exploded form of the normalized input
def normalize:
Line 1,203 ⟶ 1,364:
else .
end)
| .[];</langsyntaxhighlight>
 
'''The task:'''
<langsyntaxhighlight lang="jq">def States: [
"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado",
"Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho",
Line 1,225 ⟶ 1,386:
(States + ["New Kory", "Wen Kory", "York New", "Kory New", "New Kory"] | solve) ;
 
task</langsyntaxhighlight>
{{out}}
<langsyntaxhighlight lang="sh">$ jq -c -n -r -f State_name_puzzle.jq
Real state names:
[["North Carolina","South Dakota"],["North Dakota","South Carolina"]]
Line 1,247 ⟶ 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"]]</langsyntaxhighlight>
 
=={{header|Julia}}==
Line 1,254 ⟶ 1,415:
 
'''Module''':
<langsyntaxhighlight lang="julia">module StateNamePuzzle
 
const realnames = ["Alabama", "Alaska", "Arizona", "Arkansas", "California",
Line 1,308 ⟶ 1,469:
end
 
end # module StateNamePuzzle</langsyntaxhighlight>
 
'''Main''':
<langsyntaxhighlight lang="julia">println("Real states:")
foreach(println, StateNamePuzzle.solve(StateNamePuzzle.realnames))
 
println("\nReal + fictitious state:")
foreach(println, StateNamePuzzle.solve(vcat(StateNamePuzzle.realnames,
StateNamePuzzle.fictitious)))</langsyntaxhighlight>
 
{{out}}
Line 1,341 ⟶ 1,502:
 
=={{header|Kotlin}}==
<langsyntaxhighlight lang="scala">// version 1.2.10
 
fun solve(states: List<String>) {
Line 1,411 ⟶ 1,572:
println("Real and fictitious states:")
solve(states + fictitious)
}</langsyntaxhighlight>
 
{{out}}
Line 1,439 ⟶ 1,600:
=={{header|LiveCode}}==
This is going to be O(N^2).
<langsyntaxhighlight lang="livecode">function pairwiseAnagrams X
if the optionkey is down then breakpoint
put the long seconds into T
Line 1,483 ⟶ 1,644:
replace comma with empty in X
return X
end itemsToChars</langsyntaxhighlight>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">letters[words_,n_] := Sort[Flatten[Characters /@ Take[words,n]]];
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,496 ⟶ 1,657:
"Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
"West Virginia", "Wisconsin", "Wyoming"}], {4}], 1],
letters[#, 2] === letters[#, -2] &]</langsyntaxhighlight>
 
=={{header|Nim}}==
<langsyntaxhighlight Nimlang="nim">import algorithm, sequtils, strformat, strutils, tables
 
 
Line 1,558 ⟶ 1,719:
echo "For real + fictitious states:"
for n, pairs in matchingPairs(States & Fictitious):
echo &"{n+1:2}: {pairs}"</langsyntaxhighlight>
 
{{out}}
Line 1,583 ⟶ 1,744:
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">#!/usr/bin/perl
use warnings;
use strict;
Line 1,647 ⟶ 1,808:
 
say @states + @fictious, ' states:';
puzzle(@states, @fictious);</langsyntaxhighlight>
 
=={{header|Phix}}==
<!--<langsyntaxhighlight Phixlang="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>
Line 1,702 ⟶ 1,863:
<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>
<!--</langsyntaxhighlight>-->
{{out}}
<pre>
Line 1,713 ⟶ 1,874:
 
=={{header|PicoLisp}}==
<langsyntaxhighlight PicoLisplang="picolisp">(setq *States
(group
(mapcar '((Name) (cons (clip (sort (chop (lowc Name)))) Name))
Line 1,753 ⟶ 1,914:
(car Y) ) )
(cdr X) ) )
*States ) ) )</langsyntaxhighlight>
Output:
<pre>-> ((("North Carolina" . "South Dakota") ("North Dakota" . "South Carolina")))</pre>
Line 1,760 ⟶ 1,921:
 
Works with SWI-Prolog. Use of Goedel numbers.
<langsyntaxhighlight Prologlang="prolog">state_name_puzzle :-
L = ["Alabama", "Alaska", "Arizona", "Arkansas",
"California", "Colorado", "Connecticut",
Line 1,830 ⟶ 1,991:
GC1 is GC + 26 ** Ind,
compute_Goedel(T, GC1, GF).
</syntaxhighlight>
</lang>
Output :
<pre> ?- time(state_name_puzzle).
Line 1,855 ⟶ 2,016:
=={{header|Python}}==
{{trans|D}}
<langsyntaxhighlight lang="python">from collections import defaultdict
 
states = ["Alabama", "Alaska", "Arizona", "Arkansas",
Line 1,880 ⟶ 2,041:
for pairs in sorted(smap.itervalues()):
if len(pairs) > 1:
print " = ".join(pairs)</langsyntaxhighlight>
 
=={{header|Racket}}==
<langsyntaxhighlight lang="racket">
#lang racket
(define states
Line 1,914 ⟶ 2,075:
(cond [(hash-ref seen c (λ() (hash-set! seen c (list s1 s2)) #f))
=> (λ(states) (displayln (~v states (list s1 s2))))]))
</syntaxhighlight>
</lang>
Output:
<langsyntaxhighlight lang="racket">
'("north dakota" "south carolina") '("north carolina" "south dakota")
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
(formerly Perl 6)
{{Works with|rakudo|2018.03}}
<syntaxhighlight lang="raku" perl6line>my @states = <
Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware
Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky
Line 1,958 ⟶ 2,119:
}
}
}</langsyntaxhighlight>
 
Output:
Line 1,985 ⟶ 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).
<langsyntaxhighlight lang="rexx">/*REXX program (state name puzzle) rearranges two state's names ──► two new states. */
!='Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia,',
'Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, ',
Line 2,060 ⟶ 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.*/</langsyntaxhighlight>
{{out|output|text=&nbsp; when using the default input:}}
<pre style="height:60ex">
Line 2,207 ⟶ 2,368:
=={{header|Ruby}}==
{{trans|Tcl}}
<langsyntaxhighlight lang="ruby">require 'set'
 
# 26 prime numbers
Line 2,251 ⟶ 2,412:
puts ""
puts "with fictional states"
print_answer(States + ["New Kory", "Wen Kory", "York New", "Kory New", "New Kory"])</langsyntaxhighlight>
 
outputs
Line 2,276 ⟶ 2,437:
 
=={{header|Scala}}==
<langsyntaxhighlight Scalalang="scala">object StateNamePuzzle extends App {
// Logic:
def disjointPairs(pairs: Seq[Set[String]]) =
Line 2,301 ⟶ 2,462:
 
println(anagramPairs(states).map(_.map(_ mkString " + ") mkString " = ") mkString "\n")
}</langsyntaxhighlight>
{{out}}
<pre>New Kory + Wen Kory = York New + Kory New
Line 2,321 ⟶ 2,482:
 
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl">package require Tcl 8.5
# Gödel number generator
proc goedel s {
Line 2,387 ⟶ 2,548:
"New Kory" "Wen Kory" "York New" "Kory New" "New Kory"
}
printPairs "Real and False States" [groupStates [concat $realStates $falseStates]]</langsyntaxhighlight>
Output:
<pre>
Line 2,448 ⟶ 2,609:
{{libheader|Wren-sort}}
{{libheader|Wren-fmt}}
<langsyntaxhighlight ecmascriptlang="wren">import "./str" for Str
import "./sort" for Sort
import "./fmt" for Fmt
 
var solve = Fn.new { |states|
Line 2,522 ⟶ 2,683:
var fictitious = [ "New Kory", "Wen Kory", "York New", "Kory New", "New Kory" ]
System.print("Real and fictitious states:")
solve.call(states + fictitious)</langsyntaxhighlight>
 
{{out}}
Line 2,550 ⟶ 2,711:
=={{header|zkl}}==
{{trans|Python}}
<langsyntaxhighlight lang="zkl">#<<< // here doc
states:=("Alabama, Alaska, Arizona, Arkansas,
California, Colorado, Connecticut, Delaware, Florida,
Line 2,575 ⟶ 2,736:
// pairs=Utils.Helpers.listUnique(pairs); // eliminate dups
if(pairs.len()>1)
println(pairs.concat(" = ")) }</langsyntaxhighlight>
{{out}}
<pre>
9,485

edits