How to create a subset of words for anagram (php) application?

I created an anagram creation application by creating an anagram field in my database with a lowercase alphanumeric string.

For example, suction becomes cinostu, ear becomes aer, etc.

Now I want to create auxiliary words from the desired source anagram.

Example. How would you take a subset of the words from the search for "arrest", that is, "rest" and "stare".

+3
source share
6 answers

Hey Bork. tried to adapt your code to PHP, and I have the following:

$LetterCount = array ( "a" = > 1, "b" = > 1, "c" = > 1, "d" = > 1, "e" = > 0, "f" = > 1, "g" = > 1, "h" = > 1, "i" = > 1, "j" = > 1, "k" = > 1, "l" = > 1, "m" = > 1, n "= > 1," o "= > 1," p "= > 1," q "= > 1," r "= > 1," s "= > 1," t "= > 1, u "= > 1," v "= > 1," w "= > 1," x "= > 1," y "= > 1," z "= > 1);

$AsciiCodeLowerCaseA = 97;

for ($j = 1; $j < strlen($string); $j++) {
  $CurrentLetter = $string[$j];
  $AsciiCode = ord($CurrentLetter);
  $AlphabetPos = $AsciiCode - $AsciiCodeLowerCaseA + 1;
      $LetterCount[$AlphabetPos] = $LetterCount[$AlphabetPos] + 1;
}

, .

, , , : : Undefined offset: 1

, , echos var array , , , .

http://i42.tinypic.com/11ryz4g.png

, aplhabet , , .

, , .

0

, , - .

1) () (aerrst).

2) , , . N 2 ** N . ( PHP, , , Python, .)

: a, e, r, r, s, t, st, rs, rt, rst, rr, rs, rt, rst, rrs, rrt, rrst, er, er, es, et, est, ers, ert, erst, err, ers, erst, errs, errt, errst, ae, ar, ar, as, at, ast, ars, art, arst, arr, ars, art, arst, arrs, arrt, arrst, aer, aer, aes, aet, aest, aers, aert, aerst, aerr, aers, aert, aerst, aerrs, aerrt, aerrst

3) . , , .

eg aerrst (, , ,...)
, aerest (, ,...)
, rrs

+2

. , , . . , , .

+1

, ( !), , , , , , , - .

CS.

+1

, , . , , : -)

, .

"" "" , , , , , AZ.

, , .

Word:

"" "1" "b", "p" "r", 2 "o" "k" 3 "e", .

, , :

  • .
  • SQL-, , , , - , .

, 26 ,

:

SELECT Word FROM Dictionary WHERE NOT (
  (a >= 1) OR (b >= 1) OR (c >= 2) ... OR (z >= 1)
)

, , "a" "z" , , , "a" "z" , , 'c', .

"" , 26 , 1, , 1 .

UPDATE -

- ASP (VBScript), PHP , .

Const AsciiCodeLowerCaseA = 97
InputWord = "Carrots"
LowerCaseInputWord = LCase(InputWord)

Dim LetterCount(26)

for i = 1 to 26
  LetterCount(i) = 1
next

for j = 1 to Len(InputWord)
  CurrentLetter = Mid(InputWord, j, 1)
  AsciiCode = Chr(CurrentLetter)
  AlphabetPos = AsciiCode - AsciiCodeLowerCaseA + 1
  LetterCount(AlphabetPos) = LetterCount(AlphabetPos) + 1
next

ASCII, ascii "a" 1, 1 26. 1 .

, 1 . SQL, , , , , , . , , , ..

0

,

, ASCII - , ASCII.

, :

$LetterCount = array ( "a" = > 1, "b" = > 1, "c" = > 1, "d" = > 1, "e" = > 0, "f" = > 1, "g" = > 1, "h" = > 1, "i" = > 1, "j" = > 1, "k" = > 1, "l" = > 1, "m" = > 1, n "= > 1," o "= > 1," p "= > 1," q "= > 1," r "= > 1," s "= > 1," t "= > 1, u "= > 1," v "= > 1," w "= > 1," x "= > 1," y "= > 1," z "= > 1);

$AsciiCodeLowerCaseA = 97;

for ($j = **0**; $j < strlen($string); $j++) {
  $CurrentLetter = $string[$j];
  $AsciiCode = ord($CurrentLetter);
  $AlphabetPos = **chr($AsciiCode - $AsciiCodeLowerCaseA + 1);**
  $LetterCount[$AlphabetPos] = $LetterCount[$AlphabetPos] + 1;
}

, 1, -.

, ( - )

for($j = 0; $j < strlen($string); $j++) {
$LetterCount[$string[$j]]++;
}
0
source

Source: https://habr.com/ru/post/1711739/


All Articles