Προς το περιεχόμενο

Αλγοριθμική ερώτηση


nik324

Προτεινόμενες αναρτήσεις

Γενικά μιλώντας τα πάντα είναι εφικτά.

 

Για να πάρεις όμως μια δόκιμη και κατατοπιστική συμβουλή και όχι αόριστες συμβουλές όπως κάναμε μέχρι τώρα πρέπει να πεις τι περιορισμούς έχεις από την εκφώνηση της άσκησης (και τι αντικείμενο έχεις διδαχθεί και μπορείς να χρησιμοποιήσεις).

 

Γράψε τι λίστες και γενικά τι δομές έχεις και τι σου λέει η εκφώνηση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 102
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Γενικά μιλώντας τα πάντα είναι εφικτά.

 

Για να πάρεις όμως μια δόκιμη και κατατοπιστική συμβουλή και όχι αόριστες συμβουλές όπως κάναμε μέχρι τώρα πρέπει να πεις τι περιορισμούς έχεις από την εκφώνηση της άσκησης (και τι αντικείμενο έχεις διδαχθεί και μπορείς να χρησιμοποιήσεις).

 

Γράψε τι λίστες και γενικά τι δομές έχεις και τι σου λέει η εκφώνηση.

Δυο ΜΟΝΑ συνδεδεμενες λιστες...

Μια κατα αυξουσα και μια κατα φθινουσα διαταξη χωρις δεικτη tail...

Ζητηται να δημιουργησω μια νεα λιστα, η οποια να ειναι σε φθινουσα διαταξη και ολα αυτα σε χρονο Ο(n1+n2).

 

Το μονο που μπορω να σκευτω ειναι αυτο με την αναδρομη...

(Μην γραψετε καθολου αλγοριθμο..Απλα πειτε μου αν γινεται και αν ναι, περιπου πως(με λογια))

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Και ομως δεν εχω την δυνατοτητα να κανω χρηση καποιας βοηθητικης δομης...

 

Μηπως ειναι πολυ πιο απλο απο οτι φανταζομαι;

 

 

Αν δε σε πειράζει να χαλάσεις τις αρχικές σου λίστες τότε μπορείς να αντιστρέψεις αυτή που είναι αντίστροφα ταξινομημένη κάπως έτσι:

 

Update: Μόλις είδα ότι δε θέλεις λύση οπότε έβαλα spoiler. Αυτό που θέλεις να κάνεις είναι να αντιστρέψεις τη λίστα in place. Θα χρειαστεί να τη διατρέξεις κλασικά με ένα while, και συνολικά θα πρέπει να θυμάσαι 3 κόμβους (τον προηγούμενο, τον current και τον επόμενο). Σε κάθε βήμα βάζεις τον τωρινό να δείχνει στον προηγούμενο. Όταν ο τωρινός γίνει null (δηλαδή έχεις "βγει" από τη λίστα), ο προηγούμενος είναι το head της νέας αντίστροφα ταξινομημένης λίστας.

 

 

 

current = head;
newhead = null; // αυτό είναι ο "προηγούμενος" που λέω παραπάνω, αλλά επίσης όταν τελειώσεις θα είναι το νέο head
while (current != null) {
    next = current->next;
    current->next = newhead;
    newhead = current;
    current = next;
}

return newhead;

 

 

 

Μετά απ' αυτό έχεις 2 ταξινομημένες λίστες οπότε πανεύκολα τις κάνεις merge.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Αν δεν αντιστρεψουμε την λιστα..ειναι εφικτο κατι τετοιο?

 

Και να βγει O(n1) χωρίς χρήση ενδιάμεσης δομής? Χλωμό (αλλά ίσως κάνω λάθος).

 

Εγώ θα σου δώσω μια πιο απλή πιστεύω O(n1) λύση για να αντιστρέψεις μια λίστα (την αύξουσα στην περίπτωσή σου), η οποία όμως ενδεχομένως να θεωρηθεί πως δεν είναι inplace, αλλά στην ουσία είναι, γιατί δεν κάνει τίποτα malloc())

 

Ξεκινάς από την αρχή της λίστας και κάθε στοιχείο της το κάνεις move σε μια και καλά νέα singly linked λίστα, με λογική prepend...

 

 

 

Node *list_reverse(Node *list)
{
    Node *revedList = NULL;

    while (list != NULL) {
        // Remove element from old list.
        Node *temp = list;
        list = list->next;

        // Move element in new list.
        temp->next = revedList;
        revedList = temp;
    }

    return revedList;
}

 

Κατόπιν κάνεις merge τις 2 φθίνουσες λίστες σε O(n1+n2)... συνολικά: O(2n1+n2) = Ο(n) όπου n = (n1+n2)

 

 

 

Συγκριτικά με τη λύση του defacer, χρησιμοποιεί έναν δείκτη λιγότερο και έχει απλούστερη λογική.

Επεξ/σία από migf1
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οκ ευχαριστω και κατι ακομα ομως...

 

Αν φταναμε στο τελος της λιστας με αναδρομη , θα μπορουσαμε να κανουμε το merge , καθως επεστρεφε η αναδρομη?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλημέρα,

έχω σημειώσει πολλές φορές πως η αναδρομή δεν είναι το φόρτε μου, θα ήθελα όμως να μου εξηγήσεις γιατί επιμένεις σε αυτήν και απορρίπτεις την αντιστροφή της αύξουσας λίστας iteratively, και κατόπιν την ένωση των δυο φθινουσών λιστών επίσης iteratively.

Σε ρώτησα και σε προηγούμενο πόστ μου να μας διευκρινήσεις αν σε ενδιαφέρει η γενική ασυμπτωτική πολυπλοκότητα Ο(ν1+ν2) ή αν σε ενδιαφέρει και περαιτέρω βελτιστοποίηση ως προς τις επιδόσεις του αλγόριθμου που θα χρησιμοποιήσεις, αλλά μάλλον δεν το πρόσεξες. Νομίζω πρέπει να μας το διευκρινήσεις και αυτό, για να μπορέσουμε (αν μπορέσουμε) να βοηθήσουμε μιλώντας σε κοινό πλαίσιο.

Πάντως όπως και να 'χει, είτε σε ενδιαφέρει μόνο ασυμπτωτικά είτε και με επιδόσεις, δεν βλέπω πως μπορεί η αναδρομή να πλεονεκτήσει έναντι μιας iterative λύσης στην περίπτωση που συζητάμε εδώ.

Ακόμα και να καταφέρεις να το βγάλεις με αναδρομή σε καθαρό O(n1+n2) δηλαδή σε ένα μόνο πέρασμα για κάθε στοιχείο των δυο λιστών, στην καλύτερη θα εισαγάγεις overhead τάξης O(n1+n2) σε stack-depth (με απλά λόγια, πιθανότατα θα φας πολύ νωρίς stack-overflow error σε real life εφαρμογές). Αυτό είναι πολύ πιθανό να έχει ισοδύναμες ή ακόμα και χειρότερες επιδόσεις από μια iterative Ο(2n1+n2) λύση, ανάλογα και με expected usual μήκος των 2 λιστών σου. Αν μάλιστα γραφεί και ως tail-recusrion κι έχεις καλό compiler, θα τον βελτιστοποιήσει σε iterative έτσι κι αλλιώς.

Οπότε, σε περίπτωση που σε ενδιαφέρουν και οι επιδόσεις πέρα από την ασυμπτωτική πολυπλοκότητα, η αναδρομή όχι μόνο δεν νομίζω να πλεονεκτεί αλλά μάλλον θα περιπλέξει πολύ περισσότερο και τον κώδικα που θα χρειαστεί να γράψεις. Για να είμαι απολύτως ακριβής, ο κώδικας αυτός κάθε αυτός είναι πιθανόν να είναι πιο μικρός ίσως και πιο "καθαρός" από έναν iterative, αλλά η φαιά ουσία που θα χρειαστείς για να καταλήξεις σε καθαρό αναδρομικό κώδικα θα είναι πολύ περισσότερη από ότι να έγραφες καθαρό iterative κώδικα.

Δεν τολμώ καν να επιχειρήσω να σου γράψω from scratch αναδρομικό κώδικα για την συγκεκριμένη περίπτωση που ρωτάς, αλλά μπορώ να σου παραθέσω 2 αναδρομικά (έτοιμα) παραδείγματα που τα θεωρώ κομψά. Ένα για αναδρομική αντιστροφή λίστας κι ένα για αναδρομική ένωση 2 ήδη ταξινομημένων λιστών. Αν θεωρείς πως έχεις τον χρόνο και την υπομονή να επιχειρήσεις να τα συνδυάσεις, προαρμόζοντάς τα στις εξειδικευμένες ανάγκες της άσκησής σου ελπίζω να σου φανούν χρήσιμα (προφανώς δεν εννοώ απλά να τα καλέσεις το ένα μετά το άλλο, μιας και κάτι τέτοιο πάλι σε O(2n1+n2) θα κατέληγε, και μάλιστα με extra Ο(n1+n2) stack depth).

Προσωπικά όμως το βρίσκω περιττό, ειδικά αν μιλάμε για εφαρμογή στην πράξη (σε πραγματική εφαρμογή δηλαδή) τότε το βρίσκω τελείως περιττό. Σε εντελώς θεωρητικό επίπεδο όμως μπορεί όντως να σου φανούν χρήσιμα.


Αναδρομική Ένωση 2 Ταξινομημένων Λιστών

/* l1 and l2 are two already sorted linked lists */
Node *merge_recursively( Node* l1, Node* l2 )
{
    return (l1 == NULL)
		? l2
		: (l2 == NULL)
			? l1
			: (l1->data < l2->data)
				? (l1->next = merge_recursively(l1->next, l2), l1)
				: (l2->next = merge_recursively(l2->next, l1), l2);
}

Άναδρομική Αντιστροφή Λίστας

void reverse_recursively( Node **plist )
{
	Node *first;
	Node *rest;

	/* empty list */
	if (*plist == NULL)
		return;  

	/* suppose first = {1, 2, 3}, rest = {2, 3} */
	first = *plist;
	rest  = first->next;

	/* List has only one node */
	if (rest == NULL)
		return;  

	/* put the first element on the end of the list */
	reverse_recursively(&rest);
	first->next->next  = first; 

	/* tricky step */
	first->next  = NULL;         

	/* fix the head pointer */
	*plist = rest;
}

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν φταναμε στο τελος της λιστας με αναδρομη , θα μπορουσαμε να κανουμε το merge , καθως επεστρεφε η αναδρομη?

Όπως είπαμε πολλάκις τα πάντα γίνονται αλλά εξαρτάται από αυτό που θέλεις. Σε ενδιαφέρει μόνο η πολυπλοκότητα να είναι ν1+ν2 ? Όπως σου είπε και ο migf1 μπορεί υπό συνθήκες το overhead της recursion να είναι μεγαλύτερο από το να αντέγραφες τη μία λίστα σε μια στοίβα ώστε να αντιστραφεί. Ανάλογα τη περίσταση σκέφτεσαι ποιος αλγόριθμος ταιριάζει και είναι βέλτιστος.
merge_r (alist, dlist)
Αν η alist δεν είναι NULL έχουμε
  merge_r(alist->next, dlist)

  Όσο η τιμή της dlist είναι μεγαλύτερη της alist τότε
    Τύπωσε τη τιμή της dlist
    Η dlist δείχνει στην επόμενη τιμή.

  Εμφάνισε την τιμή της alist


dlist = 60 -> 50 -> 40 -> 30 -> 20 -> 10
alist =  5 -> 15 -> 25 -> 35 -> 75
Έξοδος:
75 -> 60 -> 50 -> 40 -> 35 -> 30 -> 25 -> 20 -> 15 -> 10 -> 5
Όσο έχουμε και άλλες τιμές στην λίστα που βρίσκεται σε αύξουσα σειρά, τρέξουμε ξανά τη συνάρτηση αναδρομικά. Αφού τελειώσουν όλες οι τιμές αρχίζει το πισωγύρισμα και εμφανίζονται αντίστροφα οι τιμές της alist δηλαδή σε φθίνουσα σειρά. Πριν όμως την εμφάνιση της κάθε τιμής ελέγχονται οι τιμές της άλλης λίστας ώστε να τις παρεμβάλλει στη σωστή θέση. Έτσι παίρνουμε το αποτέλεσμα που φαίνεται πάνω και είναι η ένωση των δύο λιστών. Δεν μπορώ να πω ότι ο κώδικας είναι ο βέλτιστος και ότι τον δοκίμασα εκτενώς αλλά 3-4 λίστες που του πέταξα τις εμφανίζει σωστά.

 

Το θέμα όμως είναι μήπως παιδεύεσαι άδικα και με κάποιον άλλο αλγόριθμο γίνει η δουλειά πιο εύκολα και με πολύ μικρή διαφορά στη ταχύτητα ?

Καλημέρα,

 

έχω σημειώσει πολλές φορές πως η αναδρομή δεν είναι το φόρτε μου, θα ήθελα όμως να μου εξηγήσεις γιατί επιμένεις σε αυτήν και απορρίπτεις την αντιστροφή της αύξουσας λίστας iteratively, και κατόπιν την ένωση των δυο φθινουσών λιστών επίσης iteratively.

 

Ακόμα και να καταφέρεις να το βγάλεις με αναδρομή σε καθαρό O(n1+n2) δηλαδή σε ένα μόνο πέρασμα για κάθε στοιχείο των δυο λιστών, στην καλύτερη θα εισαγάγεις overhead τάξης O(n1+n2) σε stack-depth (με απλά λόγια, πιθανότατα θα φας πολύ νωρίς stack-overflow error σε real life εφαρμογές). Αυτό είναι πολύ πιθανό να έχει ισοδύναμες ή ακόμα και χειρότερες επιδόσεις από μια iterative Ο(2n1+n2) λύση, ανάλογα και με expected usual μήκος των 2 λιστών σου. Αν μάλιστα γραφεί και ως tail-recusrion κι έχεις καλό compiler, θα τον βελτιστοποιήσει σε iterative έτσι κι αλλιώς.

Και εγώ δεν είμαι ειδήμων αλλά σε αυτές τις περιπτώσεις recursion => stack overflow waiting to happen.
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν δεν αντιστρεψουμε την λιστα..ειναι εφικτο κατι τετοιο?

 

Προφανώς και δεν είναι.

 

Από τη μία θέλεις να μη χρησιμοποιηθεί επιπλέον μνήμη -- άρα δεν επιτρέπεται έξτρα βοηθητική δομή -- και από την άλλη το θέλεις σε O(n) -- άρα οποιαδήποτε λύση που λειτουργεί φτιάχνοντας κάτι και ταξινομώντας το εκ των υστέρων δε σε καλύπτει. Άσε που αυτό το "φτιάχνοντας κάτι" χρησιμοποιεί επιπλέον μνήμη οπότε παραβιάζει και την προηγούμενη απαίτηση.

 

Αυτό σημαίνει πως ο,τι κάνεις θα πρέπει να το κάνεις κάνοντας merge τις δύο λίστες σε μία και παράλληλα διατηρώντας την ταξινόμηση (κράτα το αυτό). Αν επιπλέον ο περιορισμός της μη χρήσης επιπλέον μνήμης σημαίνει πως δεν επιτρέπεται ούτε να φτιάξεις ένα αντίγραφο των αντικειμένων τότε το μόνο που σου μένει είναι βασικά να εισάγεις τα αντικείμενα από τη μία λίστα μέσα στην άλλη, καταστρέφοντας την αρχική της μορφή.

 

Εδώ έρχεται και το "κράτα το" που έγραψα παραπάνω: αν όντως πρόκειται να μεταβάλλεις τη μία λίστα λόγω του περιορισμού της μη χρήσης επιπλέον μνήμης, τότε δε σε πειράζει και το ότι θα αντιστρέψεις την αντίστροφα ταξινομημένη: αφού μία θα χαλάσει έτσι κι αλλιώς, πρώτα την αντιστρέφεις και μετά παρεμβάλλεις τα αντικείμενα από την άλλη ανάμεσα στα δικά της.

 

Όσον αφορά την αναδρομή, είναι πολύ κακή προσέγγιση στο συγκεκριμένο πρόβλημα. Με επανάληψη μπορείς να χειριστείς λίστες χωρίς περιορισμό στο μήκος τους, με την αναδρομή δε μπορείς.

 

 Συγκριτικά με τη λύση του defacer, χρησιμοποιεί έναν δείκτη λιγότερο και έχει απλούστερη λογική.

 

Περίεργο συμπέρασμα, μιας και όχι μόνο μέτρησα 3 δείκτες και στις 2 περιπτώσεις αλλά επιπλέον και τον ίδιο ακριβώς αριθμό "πράξεων". Μέσα στην άγνοιά μου μου φαίνεται πως είναι ακριβώς το ίδιο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

Περίεργο συμπέρασμα, μιας και όχι μόνο μέτρησα 3 δείκτες και στις 2 περιπτώσεις αλλά επιπλέον και τον ίδιο ακριβώς αριθμό "πράξεων". Μέσα στην άγνοιά μου μου φαίνεται πως είναι ακριβώς το ίδιο.

 

Προφανώς έχουμε μάθει διαφορετική αριθμητική στο δημοτικό. Σύμφωνα με αυτή που μου έμαθαν στο δικό μου δημοτικό τα current, head, newhead και next απαριθμούν 4 δείκτες, ενώ τα list, revedList και temp απαριθμούν 3 δείκτες.

 

Επίσης, εμένα μου έχουν μάθει (αρκετά αργότερα από το δημοτικό) πως η πολυπλοκότητα της λογικής δεν είναι ευθέως ανάλογη του πλήθους των πράξεων που την υλοποιούν.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Προφανώς έχουμε μάθει διαφορετική αριθμητική στο δημοτικό. Σύμφωνα με αυτή που μου έμαθαν στο δικό μου δημοτικό τα current, head, newhead και next απαριθμούν 4 δείκτες, ενώ τα list, revedList και temp απαριθμούν 3 δείκτες.

 

Φανταστική αριθμητική. Αν γράψουμε τον κώδικα σας function body και εξαφανίσουμε την αναφορά στο head αναγκάζοντας τον caller να μας το περάσει σαν παράμετρο, οι 4 έγιναν 3! Μαγεία!

 

Για να την κάνω και γω...

 

 

 

Πριν:

 

 

current = head;
newhead = null;
while (current != null) {
    next = current->next;
    current->next = newhead;
    newhead = current;
    current = next;
}

return newhead; 

 

Μετά:

 

 

 

function reverse(current) {
    newhead = null;
    while (current != null) {
        next = current->next;
        current->next = newhead;
        newhead = current;
        current = next;
    }

    return newhead;
} 

 

Είμαι μεγάλος μάγος! Εξαφάνισα το head!

 

 

 

Μερικοί μείναμε μου φαίνεται στο δημοτικό όσον αφορά το ποιά είναι η ουσία των πραγμάτων. Αφού δεν το βλέπω στον κώδικα που ποστάρεις, δεν υπάρχει. Λογικό.

 

:eek:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Φανταστική αριθμητική. Αν γράψουμε τον κώδικα σας function body και εξαφανίσουμε την αναφορά στο head αναγκάζοντας τον caller να μας το περάσει σαν παράμετρο, οι 4 έγιναν 3! Μαγεία! Το ότι το head πάλι πρέπει να υπάρχει κάπου για να μας το περάσουν σαν παράμετρο δεν έχει καμία απολύτως σημασία.

 

Μερικοί μείναμε μου φαίνεται στο δημοτικό όσον αφορά το ποιά είναι η ουσία των πραγμάτων. Αφού δεν το βλέπω στον κώδικα που ποστάρεις, δεν υπάρχει. Λογικό.

 

Με την διαφορά πως εγώ δεν εξαφάνισα τον δικό μου list επειδή τον περνάω σαν όρισμα, τον μέτρησα κανονικά στους 3. Εσύ άμα θες πέρνα τους δικούς σου όλους σαν ορίσματα και βγάλε την 0 μετά το σούμα του μετρηματός σου. Όπως έχουμε ξαναπει, τσάμπα είναι...κάνε ότι παπαδιά θέλεις, αλλά μην νομίζεις πως ο κόσμος περιστρέφεται γύρω από τις δικές σου παπαδιές.

 

Βασικά, κι αυτό ακόμα άμα θέλεις νόμιζέ το... καλά το πας... εγώ για να είμαι ειλικρινής το απολαμβάνω!

 

EDIT. Επίσης είναι καλή ιδέα όταν προτίθεσαι να ειρωνευτείς, να έχεις φροντίσει πρώτα οι κώδικές σου να είναι γραμμένοι όπως τους εννοείς, γιατί εγώ τουλάχιστον και ειδικά για εσένα δεν πρόκειται να μυρίσω τα νύχια μου (παιρνω ως δεδομένο ότι αυτά τα λες εκ των υστέρων)... οπότε ότι γράφεις αυτό σχολιάζω, κι όταν ειρωνεύεσαι τότε το καυτηριάζω κιόλας.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όπως κάθε καλό troll.

 

BTW, αν θέλεις να με προσβάλλεις καλό θα ήταν τουλάχιστον να μη το κάνεις σαν παιδάκι. Για παράδειγμα, μπορείς να αναλάβεις την ευθύνη των λεγομένων σου και αντί για παπαδιές, να πεις:

 

migf1, λες παπαριές.

 

Άντε φώναξε τώρα το μπαμπά να με κάνει ντα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

 

 

Όπως κάθε καλό troll.

 

BTW, αν θέλεις να με προσβάλλεις καλό θα ήταν τουλάχιστον να μη το κάνεις σαν παιδάκι. Για παράδειγμα, μπορείς να αναλάβεις την ευθύνη των λεγομένων σου και αντί για παπαδιές, να πεις:

 

migf1, λες παπαριές.

 

Άντε φώναξε τώρα το μπαμπά να με κάνει ντα.

 

Η άγνοιά σου με έχει ήδη συμπαρασύρει μαζί σου σε ένα 3ήμερο ban (δεν ξέρω αν λέει κάτι, αλλα είναι η 1η φορά που έχω φάει ban σε οποιαδήποτε internetική μου συμμετοχή, από τα τέλη της δεκαετίας του '80 με τα τότε BBS.. προφανώς δεν αναφέρομαι στην Ελλάδα).

 

Δεν προτίθεμαι να σου ξανακάνω τη χάρη!

 

(με την ευκαιρία, έκανα EDIT στον προηγούμενο ποστ μου την ώρα που έγραφες αυτό εδώ το αριστουργηματικό ποστ που έχω σε παράθεση, οπότε έχε υπόψη σου πως εγώ θα σχολιάζω αυτά που γράφεις επακριβώς όπως τα γράφεις και όχι όπως δεν τα γράφεις).

 

Όπως έγραψα και δημοσίως αμέσως μετά από εκείνο το ban, θα γίνω Κατίνα για 1η φορά στη ζωή μου και κάθε φορά που θα το κρίνω σκόπιμο θα πατάω εκείνο το κουμπάκι που λέει "Αναφορά" αποκλειστικά και μόνο για σένα, για κανέναν άλλον... feel free να κάνεις κι εσύ το ίδιο.

 

Όμως το προνόμιο να αυτοχαρακτηρίζεσαι τραγικά λασπολογημένος από μένα ως επιχείρημα για να κάνεις δημόσια έκκληση να σε υποστηρίζουν εμπράκτως όσοι και όταν διαφωνούν μαζί μου στις αντιπαραθέσεις μας το αφήνω αποκλειστικά σε σένα τον ενήλικα, τον ώριμο, τον μη-troll.

 

Στο έχω πει και ιδιωτικά, στο λέω ακόμα μια φορά τώρα και δημόσια (έστω και σε spoiler), θέλω να ελπίζω και τελευταία: όσο δεν με προκαλείς με υφάκι, όσο δεν παραποιείς τα γραφόμενά μου και όσο αποδέχεσαι πως στα δικά μου τουλάχιστον μάτια δεν έχεις απολύτως κανένα ειδικό προνόμιο από οποιονδήποτε άλλον συμμετέχοντα του φόρουμ ούτε έμπειρο, ούτε άπειρο, υπάρχει ελπίδα να περάσουμε ήσυχα κι ωραία. έστω και συμβατικά. Υπό αυτές τις συνθήκες δεν έχω απολύτως κανένα πρόβλημα να κάνεις καλοπροαίρετη & κόσμια κριτική σε οτιδήποτε γράψω και πω, όπως δεν έχω απολύτως κανένα πρόβλημα από κανένα άλλον.

 

Όσο όμως επιμένεις στις πρακτικές που περιγράφω στην προηγούμενη παράγραφο, θα υπάρχει πρόβλημα (το οποίο κατά πάσα πιθανότητα θα καταλήξει μάλλον και σε μόνιμο ban και των 2 μας... όχι ότι δεν θα μπορέσουμε να ξανα-συμμετάσχουμε στο φόρουμ προφανώς με αλλαγμένο email και όνομα, αλλά μάλλον είναι καλύτερα να μην φτάσουμε μέχρι εκεί.

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

 

Δε μ' ενδιαφέρει καθόλου το τι κάνεις και το κάθε πότε επιλέγεις να γίνεις Κατίνα. Δικό σου πρόβλημα.

 

 

Όμως το προνόμιο να αυτοχαρακτηρίζεσαι τραγικά λασπολογημένος από μένα ως επιχείρημα για να κάνεις δημόσια έκκληση να σε υποστηρίζουν εμπράκτως όσοι και όταν διαφωνούν μαζί μου στις αντιπαραθέσεις μας το αφήνω αποκλειστικά σε σένα τον ενήλικα, τον ώριμο, τον μη-troll.

 

Αυτό που δεν καταλαβαίνεις μήνες τώρα, και που ενδεχομένως αποτελεί δείγμα του πως σκέφτεσαι, είναι ότι δε ζήτησα από κανέναν να με υποστηρίξει όταν διαφωνεί μαζί σου. Αυτό που έκανα ήταν να αναφερθώ στο αυτονόητο: πως όταν σε μια κοινότητα κάποιος βγαίνει out of line, θα πρέπει η κοινότητα να τον επαναφέρει ή γενικότερα να τον διαχειριστεί με κατάλληλο τρόπο. Κάτι που ισχύει τόσο για μένα όσο και για σένα.

 

Δε χρειάζεται να ψάξει κανείς πολύ για να δει ότι παραπάνω με έχεις προσβάλλει προσωπικά (και πραγματικά δε δίνω a rat's ass για το λόγο)  έμμεσα και άμεσα πολλές φορές, με τελευταία αυτή με τις παπαριές. Κατά την προσφιλή σου τακτική, αντί να πεις "λες βλακείες γι' αυτό και γι' αυτό το λόγο", λες "είσαι βλάκας". Κάτι που αποτελεί βέβαια δείγμα της παιδείας σου.

 

Απο κει και πέρα μπορείς όσο θέλεις να δικαιολογείς τα αδικαιολόγητα πατώντας πάνω σε καθαρά υποκειμενικά κριτήρια όπως "με προκαλείς με υφάκι". Αν όντως το κάνω out of the blue, θα χαρώ πολύ να μου το επισημάνει κάποιος για να βελτιώσω τη συμπεριφορά μου.

 

Όσον αφορά τα υπόλοιπα, το κρυφτούλι πίσω απ' το δάχτυλό μας σε κάποιους κύκλους δεν τελειώνει ποτε. Τουλάχιστον εγώ έχω την αξιοπρέπεια όταν μου ζητήσουν εξηγήσεις για συγκεκριμένα πράγματα που λέω και κάνω να απαντώ ευθέως αντί να λέω "θα σου απαντήσω άμα θέλω και σε ό,τι θέλω". Λέγεται ανάληψη ευθυνών και (συνήθως) χαρακτηρίζει τους ενήλικες.

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...