#!/usr/bin/env python3
# -*- coding: utf-8 -*-


# Musterlösung für Aufgabe 35

import numpy as np

def LR_kompakt(A):
    A  = A.astype('float').copy()
    n  = A.shape[0]
    p  = np.arange(n)
    
    for kk in range(n-1):
        ll = kk + np.argmax(abs(A[kk:, kk]))
        A[[kk, ll]] = A[[ll, kk]]
        p[[kk, ll]] = p[[ll, kk]]
        A[kk + 1:, kk] /= A[kk, kk]
        A[kk + 1:, kk+1:] -= A[kk +1:, [kk]] @ A[[kk], kk + 1:]
        
    return p, A

