<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=%2FCw6</id>
	<title>/Cw6 - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=%2FCw6"/>
	<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=/Cw6&amp;action=history"/>
	<updated>2026-04-17T07:11:47Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=/Cw6&amp;diff=2046&amp;oldid=prev</id>
		<title>Jarekz: Utworzono nową stronę &quot;= TI:WTBD/Ćwiczenia 6 =  * Zadanie -- ,,kartkówka&quot;: :napisać program, który posortuje linie strumienia tekstowego według ich długości, liczonej w znakach (uni...&quot;</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=/Cw6&amp;diff=2046&amp;oldid=prev"/>
		<updated>2015-05-23T14:59:12Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot;= &lt;a href=&quot;/edu/index.php/TI:WTBD&quot; title=&quot;TI:WTBD&quot;&gt;TI:WTBD&lt;/a&gt;/Ćwiczenia 6 =  * Zadanie -- ,,kartkówka&amp;quot;: :napisać program, który posortuje linie strumienia tekstowego według ich długości, liczonej w znakach (uni...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= [[TI:WTBD]]/Ćwiczenia 6 =&lt;br /&gt;
&lt;br /&gt;
* Zadanie -- ,,kartkówka&amp;quot;:&lt;br /&gt;
:napisać program, który posortuje linie strumienia tekstowego według ich długości, liczonej w znakach (unikodowych) z pominięciem ew. znaków pustych na początku i końcu linii; kodowanie może być podane jako argument opcji wywołania ''-e'', domyślnie przyjmujemy UTF-8; linie o tej samej długości sortuje w porządku ,,leksykograficznym&amp;quot;.&lt;br /&gt;
Przykład rozwiązania:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#! /usr/bin/python&lt;br /&gt;
# coding: utf-8&lt;br /&gt;
&lt;br /&gt;
from fileinput import input&lt;br /&gt;
    from optparse import OptionParser&lt;br /&gt;
&lt;br /&gt;
parser = OptionParser()&lt;br /&gt;
parser.add_option('-e', '--encoding', dest='encoding', default='utf-8')&lt;br /&gt;
opts, args = parser.parse_args()&lt;br /&gt;
enc = opts.encoding&lt;br /&gt;
def keyfun(line):&lt;br /&gt;
    s = line.decode(enc).strip()&lt;br /&gt;
    return len(s), s&lt;br /&gt;
&lt;br /&gt;
lines = sorted(input(args), key=keyfun)&lt;br /&gt;
for l in lines:&lt;br /&gt;
    print l,&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Funkcja ''keyfun'', wyznaczająca klucz sortowania, zwraca dwuelementową krotkę (''tuple'') składającą się z długości linii, i samej treści linii (po przekształceniu na napis unikodowy i oczyszczeniu ze zbędnych znaków pustych, zgodnie z warunkami zadania). Korzystamy tutaj z faktu, że domyślne sortowanie sekwencji wykorzystuje domyślny porządek kolejnych elementów -- a więc w tym przypadku, będzie oparte w pierwszej kolejności na porządku długości linii (numerycznym), a w drugiej -- na porządku leksykograficznym ich (zdekodowanej i oczyszczonej) treści.&lt;br /&gt;
''Uwaga:'' definicja ''keyfun'' może korzystać z wartości zmiennej ''enc'', zawierającej nazwę kodowania, ponieważ jest wpisana w miejscu, w którym wartość tej zmiennej jest już znana. Zupełnie inaczej, niż w językach statycznie kompilowanych! (tam kolejność definicji w pliku źródłowym nie gra roli).&lt;br /&gt;
*Wyrażenia regularne w Pythonie&lt;br /&gt;
** funkcja 're.compile'&lt;br /&gt;
** 'search' -- metoda i funkcja&lt;br /&gt;
** mikro-grep w Pythonie (''pygrep.py''), do ćwiczenia składni wyrażeń regularnych w jej dialekcie pythonowym&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import re&lt;br /&gt;
from fileinput import input&lt;br /&gt;
from sys import argv&lt;br /&gt;
    &lt;br /&gt;
rx = re.compile(argv[1].decode('utf-8'), re.UNICODE)&lt;br /&gt;
for l in input(argv[2:]):&lt;br /&gt;
    if rx.search(l.decode('utf-8')): print l,&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** 'findall' -- metoda i funkcja. Parsowanie tekstu (wyodrębnianie interesujących fragmentów) poprzez wykorzystanie ,,grup wychwytujących&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
</feed>