<jupyter_start><jupyter_text>Problem 1. Python / Generator functions Следующая функция возвращает текущее и предыдущее значения в цикле:<jupyter_code>def this_and_prev(iterable):
    iterator = iter(iterable)
    prev_item = None
    curr_item = next(iterator)
    for next_item in iterator:
        yield (prev_item, curr_item)
        prev_item = curr_item
        curr_item = next_item
    yield (prev_item, curr_item)
for i,j in this_and_prev( range(5) ): print i,j<jupyter_output>None 0
0 1
1 2
2 3
3 4<jupyter_text>По аналогии требуется написать функцию, которая будет возвращать текущее и следующее значения. Type your code below Problem 2. SQL / Python Есть следующая SQL таблица sample_table:column namedriver_id start_timestamp statusdata type(String)(String)(String)1driver_id_12017-01-21 00:05driving2driver_id_12017-01-21 00:09waiting............k x ndriver_id_n2017-01-21 23:49transporting* driver_id_i -- идентификатор i-го водителя* start_timestamp -- время начала статуса, в котором находился водитель* status -- статус, в котором находился водительДля простоты предположим, что по каждому водителю в таблице одинаковое число записей k. Табличка хранится в СУБД, которая умеет применять к данным функции, написанные на Python. Например, следующий код выполняет функцию ROW_NUMBER():<jupyter_code>def row_number(driver_id, input_data):
    sorted_data = sorted(input_data, lambda x: x[0]) # сортируем список входных данных по дате
    result = []
    row_number = 0
    while row_number <= range( 0, len(input_data) ):
        row_data = {'row_number': row_number
                    , 'driver_id': driver_id
                    , 'start_timestamp': sorted_data[row_number][0]
                    , 'status': sorted_data[row_number][1]
                    }
        row_number += 1
        result.append(row_data)
    return result
$row_number = Python::row_number(driver_id, input_data);

$raw = (
    SELECT 
            driver_id
            , start_timestamp
            , status
    FROM    sample_table
    );

$reduced = (
    REDUCE $raw
       ON  driver_id
    USING  $row_number((start_timestamp, status))
    );

SELECT * FROM $reduced;<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08340929808568824, 'fraction_numerical': 0.02643573381950775, 'mean_word_length': 3.39, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '101331', 'license': 'MIT', 'n_tokens_mistral': 800, 'n_tokens_neox': 812, 'n_words': 189, 'path': 'questions.ipynb', 'repo_name': 'alekz112/Test', 'size': '2194'}