master > mater: code - nextGreaterElement, auxiliary methods entfernt
This commit is contained in:
parent
3505401c7f
commit
6541a5246d
@ -14,7 +14,7 @@ import (
|
|||||||
* GLOBAL VARIABLES/CONSTANTS
|
* GLOBAL VARIABLES/CONSTANTS
|
||||||
* ---------------------------------------------------------------- */
|
* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
var _output_list [][2]int
|
//
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- *
|
/* ---------------------------------------------------------------- *
|
||||||
* ALGORITHM next greater element
|
* ALGORITHM next greater element
|
||||||
@ -26,7 +26,7 @@ Inputs: L = Liste von Zahlen, x = Zahl.
|
|||||||
Outputs: Liste von Paaren von Elementen und ihrem nächsten größeren Element
|
Outputs: Liste von Paaren von Elementen und ihrem nächsten größeren Element
|
||||||
*/
|
*/
|
||||||
func NextGreaterElement(L []int) [][2]int {
|
func NextGreaterElement(L []int) [][2]int {
|
||||||
clearOutput()
|
output := [][2]int{}
|
||||||
|
|
||||||
S := stacks.CREATE()
|
S := stacks.CREATE()
|
||||||
S.INIT()
|
S.INIT()
|
||||||
@ -43,7 +43,7 @@ func NextGreaterElement(L []int) [][2]int {
|
|||||||
if element < nextElement {
|
if element < nextElement {
|
||||||
// falls top Element < next Element, zum Output hinzufügen und vom Stack entfernen
|
// falls top Element < next Element, zum Output hinzufügen und vom Stack entfernen
|
||||||
logging.Debug("Stack S | %v; top Element > nextElement; ==> pop und Paar zum Output hinzufügen", S)
|
logging.Debug("Stack S | %v; top Element > nextElement; ==> pop und Paar zum Output hinzufügen", S)
|
||||||
addToOutput(element, nextElement)
|
output = append(output, [2]int{element, nextElement})
|
||||||
S.POP()
|
S.POP()
|
||||||
metrics.AddMovesCost()
|
metrics.AddMovesCost()
|
||||||
logging.Debug("Stack S | %v", S)
|
logging.Debug("Stack S | %v", S)
|
||||||
@ -70,31 +70,12 @@ func NextGreaterElement(L []int) [][2]int {
|
|||||||
for !S.EMPTY() { // ACHTUNG: schreibe 'while' im Pseudocode, denn dies ist eine while-Schleife in golang
|
for !S.EMPTY() { // ACHTUNG: schreibe 'while' im Pseudocode, denn dies ist eine while-Schleife in golang
|
||||||
logging.Debug("Stack S | %v", S)
|
logging.Debug("Stack S | %v", S)
|
||||||
element := S.TOP()
|
element := S.TOP()
|
||||||
|
output = append(output, [2]int{element, -1})
|
||||||
S.POP()
|
S.POP()
|
||||||
metrics.AddMovesCost()
|
metrics.AddMovesCost()
|
||||||
addToOutput(element, -1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logging.Debug("Stack S | %v", S)
|
logging.Debug("Stack S | %v", S)
|
||||||
|
|
||||||
return output()
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- *
|
|
||||||
* AUXILIARY METHODS
|
|
||||||
* ---------------------------------------------------------------- */
|
|
||||||
|
|
||||||
func clearOutput() {
|
|
||||||
_output_list = [][2]int{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func addToOutput(m int, n int) {
|
|
||||||
_output_list = append(_output_list, [2]int{m, n})
|
|
||||||
}
|
|
||||||
|
|
||||||
func output() [][2]int {
|
|
||||||
var output = make([][2]int, len(_output_list))
|
|
||||||
copy(output, _output_list)
|
|
||||||
clearOutput()
|
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ from src.algorithms.methods import *;
|
|||||||
# GLOBAL VARIABLES/CONSTANTS
|
# GLOBAL VARIABLES/CONSTANTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
_output_list: List[Tuple[int,int]]
|
#
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# CHECKS
|
# CHECKS
|
||||||
@ -40,7 +40,7 @@ def NextGreaterElement(L: List[int]) -> List[Tuple[int,int]]:
|
|||||||
Inputs: L = Liste von Zahlen, x = Zahl.
|
Inputs: L = Liste von Zahlen, x = Zahl.
|
||||||
Outputs: Liste von Paaren von Elementen und ihrem nächsten größeren Element
|
Outputs: Liste von Paaren von Elementen und ihrem nächsten größeren Element
|
||||||
'''
|
'''
|
||||||
clearOutput();
|
output = [];
|
||||||
|
|
||||||
S = Stack();
|
S = Stack();
|
||||||
S.INIT();
|
S.INIT();
|
||||||
@ -58,7 +58,7 @@ def NextGreaterElement(L: List[int]) -> List[Tuple[int,int]]:
|
|||||||
# falls element < next Element, zum Output hinzufügen und vom Stack entfernen
|
# falls element < next Element, zum Output hinzufügen und vom Stack entfernen
|
||||||
if element < nextElement:
|
if element < nextElement:
|
||||||
logDebug('Stack S | {S}; top Element > nextElement; ==> pop und Paar zum Output hinzufügen'.format(S=S))
|
logDebug('Stack S | {S}; top Element > nextElement; ==> pop und Paar zum Output hinzufügen'.format(S=S))
|
||||||
addToOutput(element, nextElement);
|
output.append((element, nextElement));
|
||||||
S.POP();
|
S.POP();
|
||||||
AddMovesCost();
|
AddMovesCost();
|
||||||
logDebug('Stack S | {S}'.format(S=S));
|
logDebug('Stack S | {S}'.format(S=S));
|
||||||
@ -85,27 +85,7 @@ def NextGreaterElement(L: List[int]) -> List[Tuple[int,int]]:
|
|||||||
element = S.TOP();
|
element = S.TOP();
|
||||||
S.POP();
|
S.POP();
|
||||||
AddMovesCost();
|
AddMovesCost();
|
||||||
addToOutput(element, -1);
|
output.append((element, -1));
|
||||||
|
|
||||||
logDebug('Stack S | {S}'.format(S=S))
|
logDebug('Stack S | {S}'.format(S=S))
|
||||||
return output();
|
return output;
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
# AUXILIARY METHODS
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
def clearOutput():
|
|
||||||
global _output_list;
|
|
||||||
_output_list = [];
|
|
||||||
return;
|
|
||||||
|
|
||||||
def addToOutput(m: int, n: int):
|
|
||||||
global _output_list;
|
|
||||||
_output_list.append((m, n))
|
|
||||||
return;
|
|
||||||
|
|
||||||
def output() -> List[Tuple[int, int]]:
|
|
||||||
global _output_list;
|
|
||||||
output = _output_list[:] # erstelle Kopie
|
|
||||||
clearOutput()
|
|
||||||
return output
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user