Re: Menschliche Kraftsortierung [Python]

Ich habe das schon mal gemacht.

[Neuerfindung der Räder] Von Menschen betriebene Turniersorte [Python]

Es hat sicherlich Spaß gemacht, den Algorithmus zu überlegen und zu verifizieren, aber es wurde so lächerlich, dass ich eine clevere Möglichkeit einbinden werde, einfach die Sortieraufruffunktion zu ändern.

__ Verweise: __ Entertainment-Lab: Implementierung der ursprünglichen Sortierung in Python:

Ganzer Code

Der wesentliche Sortierteil bleibt der echten Python-Sortierung überlassen, daher ist er natürlich sehr kurz.

ranking_sort.py


#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# written by ssh0, December 2014.

description = """
Ranking-Schnittstelle zur Selbstanalyse.
In dieser Anwendung
Erstellen Sie eine Vergleichsfrage basierend auf der angegebenen Liste
Das Ranking ist abgeschlossen, wenn der Benutzer darauf antwortet.
              """

import argparse
import sys

def human_cmp(a, b):
    print '\nwhich ones do you like?'
    print '  [j]: %s, [k]: %s. [=]:eq' % (a, b)
    key_input = raw_input(">>> ")
    if key_input == 'j':
        ans = -1
    elif key_input == 'k':
        ans = 1
    elif key_input == '=':
        ans = 0
    else:
        raise ValueError('please select by "j", "k" or "=".')
    return ans


if __name__ == '__main__':

    parse = argparse.ArgumentParser(description=description)
    parse.add_argument('-l', '--list',
                       dest='objects',
                       nargs='*',
                       type=str,
                       help='list of some objects',
                       default=argparse.SUPPRESS
                       )
    args = parse.parse_args()
    data = args.objects
    data.sort(cmp=human_cmp)
    print data

Die an die Sortierfunktion übergebene Funktion ist human_cmp. Seien Sie nur vorsichtig mit dem von der Funktion zurückgegebenen Wert. Vergleichen Sie die beiden Argumente und geben Sie einen negativen Wert zurück, wenn das erste Argument kleiner als das zweite Argument ist, 0, wenn sie gleich sind, und einen positiven Wert, wenn sie größer sind.

Ausführungsbeispiel

➤ python ranking_sort.py -l 3 1 4 8 5 2 6 7

which ones do you like?
  [j]: 1, [k]: 3. [=]:eq
>>> j

which ones do you like?
  [j]: 4, [k]: 1. [=]:eq
>>> k

which ones do you like?
  [j]: 4, [k]: 3. [=]:eq
>>> k

which ones do you like?
  [j]: 8, [k]: 3. [=]:eq
>>> k

which ones do you like?
  [j]: 8, [k]: 4. [=]:eq
>>> k

which ones do you like?
  [j]: 5, [k]: 4. [=]:eq
>>> k

which ones do you like?
  [j]: 5, [k]: 8. [=]:eq
>>> j

which ones do you like?
  [j]: 2, [k]: 4. [=]:eq
>>> j

which ones do you like?
  [j]: 2, [k]: 3. [=]:eq
>>> j

which ones do you like?
  [j]: 2, [k]: 1. [=]:eq
>>> k

which ones do you like?
  [j]: 6, [k]: 4. [=]:eq
>>> k

which ones do you like?
  [j]: 6, [k]: 8. [=]:eq
>>> j

which ones do you like?
  [j]: 6, [k]: 5. [=]:eq
>>> k

which ones do you like?
  [j]: 7, [k]: 4. [=]:eq
>>> k

which ones do you like?
  [j]: 7, [k]: 6. [=]:eq
>>> k

which ones do you like?
  [j]: 7, [k]: 8. [=]:eq
>>> j
['1', '2', '3', '4', '5', '6', '7', '8']

Dies ist menschliche Kraft, aber natürlich können Sie eine Funktion selbst als Referenzquelle definieren.

Nachwort

Das letzte Mal war ... Es war gut, weil es Spaß gemacht hat. Ich habe keine andere Wahl, als es zu sagen ... Oder besser gesagt, es war nicht nötig, es zu schreiben, als ich es bemerkte.

Recommended Posts

Re: Menschliche Kraftsortierung [Python]
[Python] Numpy Daten sortieren
Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
Techniken zum Sortieren in Python
Bilddateien mit Python sortieren
Python
Sortieralgorithmus und Implementierung in Python
Ruby Python Java Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung
Implementierung der ursprünglichen Sortierung in Python
Sortieren von Dateien nach Namenskonvention mit Python
[Python] Sortieren Sie Sammlungstypen als Referenz
[Neuerfindung der Räder] Von Menschen betriebene Turniersorte [Python]