Comments on Is it a near-anagram?
Parent
Is it a near-anagram?
Two words are anagrams of each other if the letters of one can be reordered to spell the other; e.g. ADOBE and ABODE are anagrams. An alternate way of describing it is that both words contain the same count of each letter. If you were to make a table:
ADOBE ABODE
----- -----
A: 1 A: 1
B: 1 B: 1
D: 1 D: 1
E: 1 E: 1
O: 1 O: 1
We can define a "near-anagram" as a pair of words that are almost anagrams, in the sense that they differ by only one letter. For example, TULIP and TUPLE are near-anagrams. TUPLE can be rearranged to spell TULEP, which differs from TULIP by only one letter. As a table:
TUPLE TULIP
----- -----
E: 1 I: 1
L: 1 L: 1
P: 1 P: 1
T: 1 T: 1
U: 1 U: 1
Challenge
The challenge is to take two strings as input and determine if they are near-anagrams.
- The strings can be taken in any convenient format for your language (strings, sequences of characters, etc.)
- The output can be any two distinct values, as long as they are always consistent; e.g. 0 and 1 for false and true.
- The strings will only contain alphabet characters in a single case. You can assume either upper or lower, whichever is convenient; examples are in upper. Input will contain no whitespace. (It is acceptable to take the input as a single string containing the words separated by whitespace, if it is convenient.)
- You can assume the strings will not be the same. A decision problem to handle equal strings is not very interesting. They may be proper anagrams, however.
- You can assume the input is not empty.
- The two words might not be the same length; they may differ by one letter at most (see test cases.)
Winning criteria is code-golf. Shortest answer in each language wins.
Test Cases
ADOBE ABODE -> false (proper anagram)
TUPLE TULIP -> true (near-anagram)
ABCDE DADBC -> true (two Ds)
BAR BARN -> true (one extra letter)
BARN BARREN -> false (too different)
[APL (Dyalog Extended)], 18 by …
4y ago
[JavaScript (Node.js)], 131 by …
4y ago
Stax, 12 bytes ä╫◙=♥:≡ƒélΣ …
4y ago
[Brachylog], 8 bytes pᵐ …
3y ago
[JavaScript (Node.js)], 150 71 …
4y ago
Post
JavaScript (Node.js), 150 71 bytes
f=(a,b)=>a[b.length]?f(b,a):b.filter(x=>a[y=a.indexOf(x)]=!~y).length-1
1 comment thread