Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,117 +0,0 @@
|
|||
<#
|
||||
.Synopsis
|
||||
ABC Problem
|
||||
.DESCRIPTION
|
||||
You are given a collection of ABC blocks. Just like the ones you had when you were a kid.
|
||||
There are twenty blocks with two letters on each block. You are guaranteed to have a
|
||||
complete alphabet amongst all sides of the blocks
|
||||
blocks = "BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS","JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"
|
||||
The goal of this task is to write a function that takes a string and can determine whether
|
||||
you can spell the word with the given collection of blocks.
|
||||
|
||||
The rules are simple:
|
||||
1.Once a letter on a block is used that block cannot be used again
|
||||
2.The function should be case-insensitive
|
||||
3. Show your output on this page for the following words:
|
||||
>>> can_make_word("A")
|
||||
True
|
||||
>>> can_make_word("BARK")
|
||||
True
|
||||
>>> can_make_word("BOOK")
|
||||
False
|
||||
>>> can_make_word("TREAT")
|
||||
True
|
||||
>>> can_make_word("COMMON")
|
||||
False
|
||||
>>> can_make_word("SQUAD")
|
||||
True
|
||||
>>> can_make_word("CONFUSE")
|
||||
True
|
||||
|
||||
Using the examples below you can either see just the value or
|
||||
status and the values using the verbose switch
|
||||
|
||||
.EXAMPLE
|
||||
test-blocks -testword confuse
|
||||
|
||||
.EXAMPLE
|
||||
test-blocks -testword confuse -verbose
|
||||
|
||||
#>
|
||||
|
||||
function test-blocks
|
||||
{
|
||||
[CmdletBinding()]
|
||||
# [OutputType([int])]
|
||||
Param
|
||||
(
|
||||
# word to test against blocks
|
||||
[Parameter(Mandatory = $true,
|
||||
ValueFromPipelineByPropertyName = $true)]
|
||||
$testword
|
||||
|
||||
)
|
||||
|
||||
$word = $testword
|
||||
|
||||
#define array of blocks
|
||||
[System.Collections.ArrayList]$blockarray = "BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS", "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"
|
||||
|
||||
#send word to chararray
|
||||
$chararray = $word.ToCharArray()
|
||||
$chars = $chararray
|
||||
|
||||
#get the character count
|
||||
$charscount = $chars.count
|
||||
|
||||
#get the initial count of the blocks
|
||||
$blockcount = $blockarray.Count
|
||||
|
||||
#find out how many blocks should be left from the difference
|
||||
#of the blocks and characters in the word - 1 letter/1 block
|
||||
$correctblockcount = $blockcount - $charscount
|
||||
|
||||
#loop through the characters in the word
|
||||
foreach ($char in $chars)
|
||||
{
|
||||
|
||||
#loop through the blocks
|
||||
foreach ($block in $blockarray)
|
||||
{
|
||||
|
||||
#check the current character against each letter on the current block
|
||||
#and break if found so the array can reload
|
||||
if ($char -in $block[0] -or $char -in $block[1])
|
||||
{
|
||||
|
||||
write-verbose "match for letter - $char - removing block $block"
|
||||
$blockarray.Remove($block)
|
||||
break
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
#get final count of blocks left in array to determine if the word was
|
||||
#correctly made
|
||||
$finalblockcount = $blockarray.count
|
||||
if ($finalblockcount -ne $correctblockcount)
|
||||
{
|
||||
write-verbose "$word : $false "
|
||||
return $false
|
||||
}
|
||||
else
|
||||
{
|
||||
write-verbose "$word : $true "
|
||||
return $true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#loop all the words and pass them to the function
|
||||
$wordlist = "a", "bark", "book", "treat", "common", "squad", "confuse"
|
||||
foreach ($word in $wordlist)
|
||||
{
|
||||
test-blocks -testword $word -Verbose
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue