Summer Scripting Games 2009 3-е задание на парсинг текста.

Beginner Division

Потребуется файл Shot Put.txt из Competitors Pack.

Задача:

  • В файле есть 2 абзаца. Нужно первый абзац записать в файл Shot Put A.txt, а второй абзац записать в Shot Put B.txt.
  • Переименовать файл Shot Put.txt в Shot Put.old.

Решение:

Если внимательно посмотреть на файл, то в нём можно найти одну уникальную последовательность - `r`n`r`n. Она разделяет 2 абзаца. Поэтому эту последовательность можно использовать в качестве разделителя для Get-Content:

[↓] [vPodans] $file = gc '.\Shot Put.txt' -Delimiter "`r`n`r`n" [↓] [vPodans] $file[0] This is the first paragraph of the shot put text file. It will need to be placed into the first text file which you will create. The shot put is an event involving putting and heavy metal ball. The object of the event is to throw the put as far as possible, or to put the shot : anyway, you get the idea. [↓] [vPodans] $file[1] This is the second paragraph of the shot put text file. it contains information you will need to put into the second file which you will also create. [↓] [vPodans]

Если со вторым абзацем понятно, то у первого очень много пробелов и пустых строк. Их можно удалить при помощи метода Trim(), который использовался уже в Event1. Собственно, само решение:

$file = gc '.\Shot Put.txt' -Delimiter "`r`n`r`n" | %{$_.trim()}
$file[0] > 'Shot Put A.txt'
$file[1] > 'Shot Put B.txt'
ren '.\Shot Put.txt' 'Shot Put.old'

Advanced Division

потребуется файл Wordlist_ADV3.txt из Competitors Pack.

Задача:

  • распарсить текстовый файл и вытащить из них слова, в которых используется не более одной уникальной гласной буквы.
  • записать эти слова в новый текстовый файл.

Решение:

В принципе, тут есть только одно простое решение (считайте, что нагло стырено у Васи):

gc .\Wordlist_ADV3.txt | ?{$_ -replace '[^AEIOUY]' -match '^(.)\1*$'} > 'Wordlist_ADV3_new.txt'

суть решения заключается в том, чтобы из каждого слова убрать все согласные и проверить, что в слове используется только одна гласная 1 или более раз. Этот регексп описан в PowerShell Cookbook на странице 494.

Friday, June 12, 2009 10:07:50 AM (FLE Daylight Time, UTC+03:00)   Comments [0]    

 

 · 
All content © 2008 - 2010, Vadims Podāns
"Spaces" Theme provided by: Vadims Podāns
About


E-mail - Send mail to the author(s)
Live Messenger -
My former blog -
For english language visitors
Библиотека
Календарик
<September 2010>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Карта расположения посетителей
Favorites





Disclaimer
Вся информация на сайте предоставляется на условиях «как есть», без предоставления каких-либо гарантий и прав.

При использовании материалов c данного сайта ссылка на оригинальный источник обязательна.