How to resolve the algorithm Word ladder step by step in the J programming language

Published on 12 May 2024 09:40 PM
#J

How to resolve the algorithm Word ladder step by step in the J programming language

Table of Contents

Problem Statement

Yet another shortest path problem. Given two words of equal length the task is to transpose the first into the second. Only one letter may be changed at a time and the change must result in a word in unixdict, the minimum number of intermediate words should be used. Demonstrate the following: A boy can be made into a man: boy -> bay -> ban -> man With a little more difficulty a girl can be made into a lady: girl -> gill -> gall -> gale -> gaze -> laze -> lazy -> lady A john can be made into a jane: john -> cohn -> conn -> cone -> cane -> jane A child can not be turned into an adult. Optional transpositions of your choice.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Word ladder step by step in the J programming language

Source code in the j programming language

extend=: {{
  j=. {:y
  l=. <:{:$m
  <y,"1 0 I.l=m+/ .="1 j{m
}}

wlad=: {{
  l=. #x assert. l=#y
  words=. >(#~ l=#@>) cutLF fread 'unixdict.txt'
  ix=. ,:words i.x assert. ix<#words
  iy=. ,:words i.y assert. iy<#words
  while. -. 1 e. ix e.&, iy do.
    if. 0 e. ix,&# iy do. EMPTY return. end.
    ix=. ; words extend"1 ix
    if. -. 1 e. ix e.&, iy do.
      iy=. ; words extend"1 iy
    end.
  end.
  iy=. |."1 iy
  r=. ix,&,iy
  for_jk.(ix,&#iy)#:I.,ix +./@e."1/ iy do.
    ixj=. ({.jk){ix
    iyk=. ({:jk){iy
    for_c. ixj ([-.-.) iyk do.
      path=. (ixj{.~ixj i.c) , iyk}.~ iyk i.c
      if. path <&# r do. r=. path end.
    end.
  end.
  }.,' ',.r{words
}}


   'boy' wlad 'man'
boy bay ban man
   'girl' wlad 'lady'
girl gill gall gale gaze laze lazy lady
   'john' wlad 'jane'
john cohn conn cone cane jane
   'child' wlad 'adult'
   'cat' wlad 'dog'
cat cot cog dog
   'lead' wlad 'gold'
lead load goad gold
   'white' wlad 'black'
white whine chine chink clink blink blank black
   'bubble' wlad 'tickle'
bubble babble gabble garble gargle gaggle giggle jiggle jingle tingle tinkle tickle


  

You may also check:How to resolve the algorithm Unprimeable numbers step by step in the zkl programming language
You may also check:How to resolve the algorithm Averages/Root mean square step by step in the Ada programming language
You may also check:How to resolve the algorithm Hello world/Standard error step by step in the Ursa programming language
You may also check:How to resolve the algorithm Tarjan step by step in the J programming language
You may also check:How to resolve the algorithm Matrix-exponentiation operator step by step in the M2000 Interpreter programming language