daniel-ac-martin/word-ladder

一个用于解决单词梯子谜题的命令行程序和库。

0.1 2015-05-18 15:53 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:20:21 UTC


README

word-ladder是一个用于解决单词梯子谜题的命令行程序和PHP库。

单词梯子是一种由刘易斯·卡罗尔发明的文字游戏。玩家被给出两个单词,必须找到一条从一端到另一端的“梯子”,梯子上相邻的梯阶之间只有一个字母不同。例如:

Ladder from GIT to HUB:
GIT -> GUT -> HUT -> HUB

单词梯子问题可能有多个正确答案。因此,word-ladder将声明它找到的第一个解决方案,然后分析所有解决方案(与第一个解决方案相同长度)并声明最佳解决方案。(这里的“最佳”是指最不常见的单词比其他所有解决方案中最不常见的单词更常见。即,梯子的强度仅取决于最弱的一环/梯阶。)

单词梯子游戏有一些变体,其中必须在指定的步数内解决问题。在某些情况下,可能可以在更少的步骤内解决问题。与其他大多数求解器不同,word-ladder接受一个选项,尝试在指定的步数内解决问题。(如果没有提供此选项,它将尝试尽可能少地解决问题。)

程序 - 入门

下载Phar。将其放在您系统的任何位置。通过PHP在命令行中执行它。(或者如果您在/usr/bin/php有有效的、现代的PHP二进制文件,您可以直接执行它。)

程序 - 使用方法

Usage: word-ladder.phar START FINISH [STEPS]

命令行程序接受三个参数,STARTFINISHSTEPS,其中只有第三个STEPS是可选的。

START:梯子中的第一个单词。

FINISH:梯子中的最后一个单词。

STEPS:梯子上的步数/梯阶数。

示例

$ php word-ladder.phar git hub
Attempting: git -> hub
First solution set (3 steps) found after 2 lookups:
0: git  [a person who is deemed to be despicable or contemptible; "only a ro...]
1: gib  [a castrated tomcat]
2: gub  []
3: hub  [the central part of a car wheel (or fan or propeller etc) through w...]
[Prevalence score: 112.26878713664]
Finding and analysing all solutions... Done.

10 solution(s) found.

0: git  [a person who is deemed to be despicable or contemptible; "only a ro...]
1: gut  [a strong cord made from the intestines of sheep and used in surgery]
2: hut  [small crude shelter used as a dwelling]
3: hub  [the central part of a car wheel (or fan or propeller etc) through w...]

[Prevalence score: 16551.249116398]

库 - 入门

  1. 获取Composer
  2. 通过php composer.phar require daniel-ac-martin/word-ladder要求word-ladder
  3. 使用php composer.phar install安装依赖关系

库 - 使用方法

通过包含Composer的自动加载器并调用方法WordLadder\WordLadder::solve来调用库。请参阅以下示例。

<?php

require_once 'vendor/autoload.php'; // Composer's autoloader

$start  = 'git';
$finish = 'hub';
$steps  = 4;

try
{
	$solution = WordLadder\WordLadder::solve($start, $finish, $steps);
	
	foreach($solution->solution() as $e)
	{
		echo $e->word() . ': ' . substr($e->definition(), 0, 78 - strlen($start)) . "\n";
	}
}
catch(Exception $e)
{
	die('Error: ' . $e->getMessage() . "\n");
}

?>

许可证

版权所有(C) 2015 Daniel A.C. Martin

在GNU GPL v3下分发。